Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
433 commits
Select commit Hold shift + click to select a range
186489b
use `Object.create(null)` in one more case
zloirock Dec 5, 2023
bdb6751
use `Object.create(null)` in one more case
zloirock Dec 5, 2023
05ca397
drop `Number.fromString` (proposal is dead, semantics is not clear)
zloirock Dec 5, 2023
edd8d57
drop `Function.{ isCallable, isConstructor}` (proposal is dead)
zloirock Dec 5, 2023
a5619cb
drop `Math.signbit` (proposal is dead)
zloirock Dec 5, 2023
f3c94d7
drop `Math.{ clamp, DEG_PER_RAD, degrees, fscale, RAD_PER_DEG, radian…
zloirock Dec 5, 2023
bc9a193
drop `String.prototype.codePoints` (proposal is dead)
zloirock Dec 6, 2023
4771a33
drop `set(Timeout|Interval)` fixes (required for IE9-)
zloirock Dec 6, 2023
720d9c9
consider a way setting of a prototype - `Object.setPrototypeOf` or `_…
zloirock Dec 6, 2023
173e5f5
drop `es.number.to-precision` (required for ancient engines like IE8-…
zloirock Dec 6, 2023
4a58b8e
drop 'es.date.to-iso-string' (required for IE8- and other ancient eng…
zloirock Dec 6, 2023
6017a75
drop `es.error.to-string` (required for IE8-, V8 ~ Chrome 32-, FF10-)
zloirock Dec 6, 2023
da65e98
remove a workaround of V8 ~ Chrome 36- `Object.{ defineProperty, defi…
zloirock Dec 6, 2023
9ce6733
drop `es.object.define-property` (required for ES3 engines and V8 ~ C…
zloirock Dec 6, 2023
bc176b3
drop `es.object.define-properties` (required for ES3 engines and V8 ~…
zloirock Dec 6, 2023
ff7fc98
drop `es.escape` (supported in all popular modern engines)
zloirock Dec 6, 2023
2d69ea9
drop `es.unescape` (supported in all popular modern engines)
zloirock Dec 6, 2023
9af7ad6
drop `es.string.substr` (supported in all popular modern engines)
zloirock Dec 6, 2023
cac61d2
drop `es.date.to-gmt-string` (supported in all popular modern engines)
zloirock Dec 6, 2023
9250126
drop `es.date. set-year` (supported in all popular modern engines)
zloirock Dec 6, 2023
c12e5b3
drop `es.date.get-year` (supported in all popular modern engines, req…
zloirock Dec 6, 2023
1a4d663
drop `es.array.for-each` (required for ES3 only)
zloirock Dec 6, 2023
825370d
drop `es.array.every` (required for ES3 only)
zloirock Dec 6, 2023
c036dc1
drop `es.array.some` (required for ES3 only)
zloirock Dec 6, 2023
c23e606
drop PhantomJS from compat data and valid targets since it's planned …
zloirock Dec 6, 2023
1e66000
consider `ArrayBuffer` and `DataView` as existent
zloirock Dec 6, 2023
d468760
consider strict mode as supported in tests
zloirock Dec 6, 2023
0dfac95
consider `ArrayBuffer` and `DataView` as existent in compat tests
zloirock Dec 6, 2023
c09ccca
drop PhantomJS from Karma
zloirock Dec 7, 2023
74c7340
consider basic support of `WeakMap`
zloirock Dec 7, 2023
5a5a810
consider basic support of `%TypedArray%`
zloirock Dec 7, 2023
d28a3b1
drop fallbacks to ancient FF iterators (with `'@@iterator'` string)
zloirock Dec 8, 2023
529aa78
drop one more extra `ArrayBuffer` check
zloirock Dec 8, 2023
2cd4874
direct access to `Reflect.ownKeys` in `own-keys` helper
zloirock Dec 8, 2023
0e50eca
use native `Object.defineProperty` in unit tests constants
zloirock Dec 8, 2023
4e87d2d
consider `__proto__` as redefinable (V8 ~ Chrome 27- bug)
zloirock Dec 8, 2023
c004f43
drop a workaround of a strict mode lack case
zloirock Dec 9, 2023
d9d1d7e
consider `Array#lastIndexOf` as existent
zloirock Dec 9, 2023
8894c52
drop IE8- case from tasks / microtasks, drop `.bind` dep from some in…
zloirock Dec 9, 2023
d0ed320
drop third argument from `copy-constructor-properties` as not used
zloirock Dec 9, 2023
7a1175a
drop extra dependency declaration from `array-buffer-byte-length`
zloirock Dec 9, 2023
d833746
drop `.bind` dep from some init time cases, simplify with `.forEach`
zloirock Dec 9, 2023
57c3b08
consider `ArrayBuffer` and `DataView` as existent in `web.structured-…
zloirock Dec 9, 2023
5c8235b
consider `Uint8Array` as existent in some more cases
zloirock Dec 9, 2023
ede32bc
use native `Array#forEach` in one more case
zloirock Dec 9, 2023
01a296c
drop some extra dependencies declaration
zloirock Dec 10, 2023
87712f0
drop one more `Object.isFrozen` existence check
zloirock Dec 10, 2023
a5a31d2
disable `es/no-typed-arrays` `eslint` rule
zloirock Dec 11, 2023
ea7d973
consider `Array#indexOf` as existent
zloirock Dec 11, 2023
889e7e2
consider `Array#lastIndexOf` as existent
zloirock Dec 11, 2023
ef84596
use `Float32Array` in `Math.fround` polyfill
zloirock Dec 11, 2023
fc026db
fix `indexOf` and `lastIndexOf` for some old engines
zloirock Dec 11, 2023
94406d6
drop Opera Presto workaround from `Number` constructor polyfill
zloirock Dec 11, 2023
6ca18f8
drop detection of IE8- only bug from `Number#toExponential` polyfill
zloirock Dec 11, 2023
ee3274f
drop detection of ancient V8 only bug from `Number#toFixed` polyfill
zloirock Dec 11, 2023
b7e7a41
drop a workaround for ancient engines whose `exec` methods don't cons…
zloirock Dec 11, 2023
7a325ab
drop a workaround for a IE bug with non-enumerable integer keys on `n…
zloirock Dec 11, 2023
a2fe83a
reuse `internal-state` abstraction in `Symbol` polyfill
zloirock Dec 12, 2023
1767d5a
implicit `parseInt` / `parseFloat` dependencies in `Number.{ parseInt…
zloirock Dec 13, 2023
6298e6a
replace `fastKey` logic with native `Map`
zloirock Dec 14, 2023
72919f1
finally drop `internal-metadata` and `hidden-keys` logic, use native …
zloirock Dec 15, 2023
028e02f
use native `Map` in `composite-key`
zloirock Dec 15, 2023
29a973d
move some modules above in the order of modules loading to ensure pro…
zloirock Dec 18, 2023
b11a108
move `internal/object-assign` to `es.object.assign`
zloirock Dec 18, 2023
63f6461
inline `to-uint8-clamped`
zloirock Dec 19, 2023
e5e529b
use array iteration methods in some simple cases
zloirock Dec 20, 2023
59128d6
drop ignore of old V8 / WebKit number conversion bug
zloirock Dec 20, 2023
c63c24a
move `DataView`-related features from `internals/array-buffer` to `es…
zloirock Dec 20, 2023
0f0882e
move `ArrayBuffer`-related features from `internals/array-buffer` to …
zloirock Dec 20, 2023
7d6883b
extract `DataView#{ setInt8, setUint8 }` fixes as separate modules
zloirock Dec 20, 2023
3dfbcff
extract `DataView.prototype[@@toStringTag]` as a separate module
zloirock Dec 20, 2023
5c53af9
extract `ArrayBuffer.prototype[@@toStringTag]` as a separate module
zloirock Dec 20, 2023
641ecc9
extract `ArrayBuffer[@@species]` as a separate module
zloirock Dec 20, 2023
c17a042
extract `{ Map, Set }[@@species]` as a separate module
zloirock Dec 21, 2023
e5307a6
join typed array constructors lists
zloirock Dec 23, 2023
fc735fc
move `ArrayBuffer.isView` logic directly to `es.array-buffer.is-view`
zloirock Dec 23, 2023
f85bbcb
extract `a-typed-array-constructor` helper to a separate module
zloirock Dec 23, 2023
acc08e6
extract `get-typed-array-constructor` helper to a separate module
zloirock Dec 23, 2023
39c5aee
move typed arrays `@@toStringTag` to metadata
zloirock Dec 23, 2023
3366b20
extract `export-typed-array-static` helper to a separate module
zloirock Dec 23, 2023
ee2589c
extract `export-typed-array-method` helper to a separate module
zloirock Dec 23, 2023
3ca9b45
extract `a-typed-array` helper to a separate module
zloirock Dec 23, 2023
f53891a
extract `is-typed-array` helper to a separate module
zloirock Dec 23, 2023
bddb01a
rename `array-buffer-view-core` -> `typed-array-core` since now it's …
zloirock Dec 23, 2023
6d010c4
use `classof-raw` in `is-typed-array` to avoid unnecessary `@@toStrin…
zloirock Dec 23, 2023
272fd9f
extract `%TypedArrayPrototype%[@@toStringTag]` to a separate module
zloirock Dec 24, 2023
34a4eae
redefine `DOMException#toString` as unsafe
zloirock Dec 24, 2023
810365d
rewrite `export-typed-array-static` helper
zloirock Dec 24, 2023
b47bba7
rework `export-typed-array-static` helper, fix some `%TypedArray%` me…
zloirock Dec 24, 2023
1e413bf
update `es.typed-array.subarray` compat data
zloirock Dec 24, 2023
2c6da15
extract `%TypedArray%[@@species]` to a separate module (and fix it)
zloirock Dec 25, 2023
436083b
drop `ARRAY_BUFFER_VIEWS_SUPPORT` check from compat tests
zloirock Dec 25, 2023
e15d985
avoid overwriting `.TypedArrayConstructor` by wrappers in typed array…
zloirock Dec 25, 2023
5b674f1
simplify `prototype.constructor` overwriting in typed array wrappers
zloirock Dec 25, 2023
90f2a5b
`BYTES_PER_ELEMENT` constants of typed array constructors and prototy…
zloirock Dec 25, 2023
2a6203c
drop typed arrays elements descriptors tests since it's no longer `co…
zloirock Dec 25, 2023
1234a17
drop typed arrays `.sham` flag test since it no longer makes sense
zloirock Dec 25, 2023
4790fc4
enable some tests for all envs
zloirock Dec 25, 2023
aa8705e
rename for consistency with actual module name
zloirock Dec 25, 2023
0753cf5
reuse `copy-constructor-properties` in `typed-array-constructor`, fix…
zloirock Dec 25, 2023
b0f71ff
rework `inherit-if-required`
zloirock Dec 26, 2023
51827f6
rework `typed-array-core`
zloirock Dec 26, 2023
fa65cfa
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
366725b
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
bc6d7ab
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
c7dab5b
allow `WeakMap`, `Map` and `Set` in `eslint` config
zloirock Dec 26, 2023
00b791d
extract `internal-state-getter-for` helper
zloirock Dec 26, 2023
295d07a
drop unused `internal-state -> has` helper
zloirock Dec 26, 2023
1bbba5c
some changes in `shared-store`
zloirock Dec 27, 2023
a3c473b
add `object-set-prototype-of-simple` helper
zloirock Dec 27, 2023
25a12ba
drop `is-forced` logic as not viable in the current form
zloirock Dec 27, 2023
368110e
drop extra `global` usage
zloirock Dec 27, 2023
5f70374
rename internal `global` reference to `globalThis` for consistency wi…
zloirock Dec 27, 2023
74ffda4
drop a workaround of ancient Nashorn `Object.prototype.propertyIsEnum…
zloirock Dec 28, 2023
6797a70
drop some typed arrays existence checks
zloirock Dec 28, 2023
df07fdf
simplify `typed-array-core`
zloirock Jan 2, 2024
8c0aaa6
drop a workaround of Qt Script bug since it's anyway based on unsuppo…
zloirock Jan 3, 2024
59079a5
bump `DOMException` above the rest web modules in the order of loading
zloirock Jan 3, 2024
6a82eda
don't cash used only on init time built-ins, some other minor improve…
zloirock Jan 3, 2024
0b2d874
drop internal `Iterators` abstraction
zloirock Jan 3, 2024
435b253
return internal `Iterators` store for the pure version
zloirock Jan 5, 2024
b6810df
simplify some cases of `Array` normalization logic, split `es.array.i…
zloirock Jan 5, 2024
224aad5
drop ancient `iterator-define` logic
zloirock Jan 5, 2024
7fb38e9
`iterators-core` -> `iterator-prototype`
zloirock Jan 5, 2024
41d02a9
ensure some dependencies
zloirock Jan 5, 2024
4856deb
split `es.typed-array.iterator`
zloirock Jan 6, 2024
7faed37
split `web.dom-collections.iterator`
zloirock Jan 6, 2024
088e989
update readme
zloirock Jan 6, 2024
5ce4ce0
use `String#repeat` as an implicit dependency
zloirock Jan 7, 2024
837911a
`make-built-in` `options.{ getter, setter -> prefix }`
zloirock Jan 7, 2024
4f6e819
fix names
zloirock Jan 8, 2024
e32ffcf
simplify `make-built-in`
zloirock Jan 8, 2024
66f1733
fix names
zloirock Jan 8, 2024
8bb94fc
drop `Symbol.withoutSetter`
zloirock Jan 8, 2024
2e5ecf9
drop keys composition proposal as dead (no activity 5+ years), I hope…
zloirock Jan 10, 2024
1be36f6
drop new collections methods proposal as dead (no activity 6+ years),…
zloirock Jan 11, 2024
9246235
mark `es.array-buffer.species` as not supported by hermes
zloirock Jan 12, 2024
2a46d5f
don't use `@@toStringTag` on typed array check
zloirock Jan 13, 2024
5a97e1e
drop unneded `.sham` flag check
zloirock Jan 13, 2024
940e472
drop `copyConstructorProperties` from global version `export` as dupl…
zloirock Jan 14, 2024
7669495
drop some obsolete entries definitions
zloirock Jan 17, 2024
193ca58
fix filter in `build-entries` script
zloirock Jan 17, 2024
3551006
drop some arity checks for the pure version
zloirock Jan 17, 2024
728de27
some changes in export logic
zloirock Jan 18, 2024
31fbfd5
use common export on `Object#toString`
zloirock Jan 18, 2024
9247463
ignore `scripts/clean-dependencies` `package-lock`
zloirock Jan 18, 2024
6596b6a
build instance entries
zloirock Jan 22, 2024
1dd1e4d
add entries definitions for `ArrayBuffer` and `DataView`
zloirock Jan 23, 2024
4fa7f64
build entries for common iterators
zloirock Jan 24, 2024
07a7809
add entries definitions for `Symbol`
zloirock Jan 24, 2024
f2d2c6b
build entries for typed arrays
zloirock Jan 24, 2024
07aa8b1
build entries for regexp
zloirock Jan 25, 2024
afda4c8
build entries for DOM collections
zloirock Jan 25, 2024
8a7c8b7
add some missed entries definitions
zloirock Jan 25, 2024
729a6b7
drop /actual/ entries for async iterator helpers since now it's on st…
zloirock Jan 26, 2024
45016d6
drop some extra arity tests from the pure version
zloirock Jan 26, 2024
cb8b6ae
drop unneded `to-string-tag` entries
zloirock Jan 28, 2024
abd80be
rework / drop some entries and definitions
zloirock Jan 28, 2024
3cf7722
drop `stage/4` entry as useless
zloirock Jan 28, 2024
dd8586f
tweak some entries definitions and dependencies
zloirock Jan 29, 2024
3b5319e
tweak some entries definitions and dependencies
zloirock Jan 29, 2024
44220fa
tweak some entries definitions, dependencies declaration and templates
zloirock Jan 30, 2024
4695a21
declare some missed dependencies
zloirock Jan 31, 2024
f6553b0
tweak some entries definitions
zloirock Feb 1, 2024
0eb96d1
use generated entries
zloirock Feb 1, 2024
760d3f5
move tests indexes building to `bundle-tests` script
zloirock Feb 1, 2024
b1635da
drop legacy entries for `ArrayBuffer#transfer` proposal
zloirock Feb 8, 2024
14e9937
restore `Promise.try` proposal
zloirock Feb 8, 2024
bbab64d
no longer publish `core-js` on `deno.land/x`
zloirock Feb 13, 2024
8dd32ba
fix `access` in `package.json` files
zloirock Feb 13, 2024
7cfc2f1
move `debug-get-dependencies` to tests folder
zloirock Feb 18, 2024
a1da65a
rework building entries
zloirock Feb 18, 2024
83da37f
update docs
zloirock Feb 18, 2024
bbed6cd
`ifModules` -> `necessary`
zloirock Feb 18, 2024
dd92d6a
build exports fields
zloirock Mar 10, 2024
d85f8da
change the style of `$namespace` entry template usage
zloirock Mar 19, 2024
c0abf89
change the style of `$helper` entry template usage
zloirock Mar 19, 2024
abf51fa
change the style of `$prototypeIterator` entry template usage
zloirock Mar 19, 2024
65d0124
change the style of `$virtualIterator` entry template usage
zloirock Mar 19, 2024
d5869d3
change the style of `$staticWithContext` entry template usage
zloirock Mar 19, 2024
c90ffba
change the style of `$patchableStatic` entry template usage
zloirock Mar 19, 2024
9f041b6
change the order of some keys
zloirock Mar 19, 2024
097a327
change the style of `$static` entry template usage
zloirock Mar 19, 2024
5336d16
change the style of `$prototype` and `$virtual` entry templates usage
zloirock Mar 19, 2024
f7d348d
require `new` for `DataView` constructor
zloirock Mar 20, 2024
965685b
update dependencies
zloirock Mar 21, 2024
f94fd0f
patch `DataView` for proper handling `undefined` as `byteOffset` and …
zloirock Mar 21, 2024
a6c5b44
change engine keys for compat tools / data
zloirock Mar 24, 2024
aa1dd9e
rename some `entries-definitions` params
zloirock Mar 24, 2024
63ac442
build entries data for `@core-js/compat` on building entries
zloirock Mar 24, 2024
122aece
load `padStart` as an optional dependency
zloirock Mar 28, 2024
e32704a
add a couple of missed entries definitions
zloirock Apr 1, 2024
cc9df03
add a missed entry
zloirock Apr 2, 2024
9608917
start experimental building built-in definitions from entries definit…
zloirock Apr 2, 2024
ee56427
drop `postinstall`
zloirock Jul 29, 2024
2517f64
drop legacy iterator helpers modules
zloirock Oct 8, 2024
fddbdb2
replace `internals/math-log2 ` with module dependency
zloirock Nov 24, 2024
b4db314
update after rebasing
zloirock Dec 28, 2024
1a96881
update Node version
zloirock Jul 4, 2025
e0ff0dc
fix `Array.prototype[@@iterator]` compat test
zloirock Jul 9, 2025
dca6bbc
Revert "change engine keys for compat tools / data"
zloirock Jul 9, 2025
34236a6
avoid creation of some unneeded entries, drop `necessaryModules` - no…
zloirock Jul 12, 2025
a7fd895
fix some dependencies
zloirock Jul 12, 2025
509f5de
test some entries
zloirock Jul 16, 2025
e53720a
update dependencies and fix package.json fields
zloirock Jul 17, 2025
a5c871f
no longer require manual adding new modules to `modules-by-versions`
zloirock Aug 2, 2025
161c50b
add `entries-by-versions` data
zloirock Aug 2, 2025
930687a
add `@core-js/compat/get-entries-list-for-target-version` helper
zloirock Aug 2, 2025
f645ea8
add a template of a babel plugin and tests runner
zloirock Aug 3, 2025
3b9af89
replace /virtual/ entries with /prototype/
zloirock Aug 5, 2025
0d63c02
drop building built-ins definitions from entries definitions
zloirock Aug 5, 2025
bc36726
tweak entries / dependencies
zloirock Aug 9, 2025
c00994c
prototype built-in definitions
zloirock Aug 9, 2025
89b7b11
drop `core-js/` prefix from entries in compat / builder packages API
zloirock Aug 10, 2025
a36148e
drop `@core-js/{ compat, builder }` strings-namespaces support in `mo…
zloirock Aug 11, 2025
e6069b4
update hermes data
zloirock Aug 12, 2025
be12f2e
prototype global plugin modes
zloirock Aug 22, 2025
c7cfde8
work on plugin
zloirock Aug 23, 2025
43681ab
add some fixtures
zloirock Aug 23, 2025
f765caa
test babel plugin on ci
zloirock Aug 23, 2025
6d03d7c
add some fixtures
zloirock Aug 24, 2025
48fcd0e
basic type optimization for `usage-global`
zloirock Aug 24, 2025
204e333
better optimization by hint in `usage-global`
zloirock Aug 25, 2025
49389d3
add `min-args` plugin filter
zloirock Aug 26, 2025
3ed63f9
add `arg-is-string` plugin filter
zloirock Aug 26, 2025
de72b1b
drop IE8- `unshift` fix
zloirock Aug 26, 2025
442a9e3
drop one more ancient IE workaround
zloirock Aug 26, 2025
ff60a0c
drop IE8- `sort` fix
zloirock Aug 26, 2025
072348f
drop IE8 `stringify` fix
zloirock Aug 26, 2025
bc4e83b
drop Safari 6 `%TypedArray%.prototype.toLocaleString` fix
zloirock Aug 26, 2025
6fa0d64
add `min-args` filter to `JSON.parse`
zloirock Aug 26, 2025
642c137
add `min-args` filter to `Number#toExponential`
zloirock Aug 26, 2025
2c908c4
add `arg-is-object ` plugin filter
zloirock Aug 26, 2025
12ed8c5
inject polyfills in visitor in `usage-global`
zloirock Aug 28, 2025
d6d4c4f
split `esnext.observable` -> `esnext.observable.{ constructor, from, …
zloirock Oct 4, 2023
a771d3e
drop old TC39 `Observable` proposal in favor of future adding new Web…
zloirock Oct 13, 2023
54aa146
drop legacy iterator helpers modules
zloirock Oct 8, 2024
14d1224
update after rebasing
zloirock Dec 28, 2024
3c9b89a
add a template of a babel plugin and tests runner
zloirock Aug 3, 2025
6bd3d2b
Await dictionary of Promises proposal
slowcheetah Sep 15, 2025
ff6b285
Update after rebase
slowcheetah Sep 15, 2025
ac9b70c
Await dictionary of Promises proposal
slowcheetah Sep 15, 2025
39eba0d
Update Promise.allKeyed tests
slowcheetah Sep 18, 2025
1eb0d4c
Update docs for v4
slowcheetah Oct 9, 2025
99b9a5b
Await dictionary docs
slowcheetah Oct 14, 2025
a1353d1
Proposal await dictionary allSettledKeyed method
slowcheetah Oct 31, 2025
d5c72c3
some tweaks
zloirock Nov 2, 2025
b0f07ea
fix entries tests
zloirock Nov 2, 2025
f528240
Iterator join proposal
slowcheetah Nov 10, 2025
da128c4
drop obsolete methods from `eslint` config
zloirock Nov 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
- run: npm ci
- run: npx run-s bundle test-unit-bun

promises-and-observables:
promises:
strategy:
matrix:
node:
Expand All @@ -64,7 +64,7 @@ jobs:
node-version: ${{ matrix.node }}
cache: npm
- run: npm ci
- run: npx run-s test-promises test-observables
- run: npm run test-promises

tests:
strategy:
Expand All @@ -88,4 +88,4 @@ jobs:
node-version: ${{ matrix.node }}
cache: npm
- run: npm ci
- run: npx run-s bundle test-unit-node test-entries test-compat-data test-compat-tools test-builder
- run: npx run-s bundle test-unit-node test-entries test-compat-data test-compat-tools test-builder test-babel-plugin
18 changes: 10 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,37 +13,39 @@ node_modules/
/docs/web/changelog.md
/docs/web/contributing.md
/docs/web/security.md
/packages/core-js/features/
/packages/core-js/es/index.js
/packages/core-js/full/index.js
/packages/core-js/stable/index.js
/packages/core-js/actual/
/packages/core-js/es/
/packages/core-js/full/
/packages/core-js/proposals/
/packages/core-js/stable/
/packages/core-js/stage/
/packages/core-js/index.js
/packages/core-js/LICENSE
/packages/core-js-babel-plugin/LICENSE
/packages/core-js-builder/LICENSE
/packages/core-js-bundle/LICENSE
/packages/core-js-bundle/index.js
/packages/core-js-bundle/minified.js
/packages/core-js-bundle/minified.js.map
/packages/core-js-bundle/postinstall.js
/packages/core-js-compat/LICENSE
/packages/core-js-compat/built-in-definitions.json
/packages/core-js-compat/data.json
/packages/core-js-compat/entries.json
/packages/core-js-compat/entries-by-versions.json
/packages/core-js-compat/external.json
/packages/core-js-compat/modules.json
/packages/core-js-compat/modules-by-versions.json
/packages/core-js-pure/actual/
/packages/core-js-pure/es/
/packages/core-js-pure/features/
/packages/core-js-pure/full/
/packages/core-js-pure/internals/
/packages/core-js-pure/modules/
/packages/core-js-pure/proposals/
/packages/core-js-pure/stable/
/packages/core-js-pure/stage/
/packages/core-js-pure/web/
/packages/core-js-pure/LICENSE
/packages/core-js-pure/index.js
/packages/core-js-pure/configurator.js
/packages/core-js-pure/postinstall.js
/tests/**/bundles/
/tests/compat/*.jar
/tests/compat/compat-data.js
Expand Down
25 changes: 10 additions & 15 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@ There is always some ["help wanted" issues](https://github.com/zloirock/core-js/
- The polyfill should properly work in ES3 and all possible engines. If in some engines it cannot be implemented (for example, it strictly requires more modern ES or unavailable platform features), it should not break any other `core-js` features or application in any way.
- Avoid possible observing / breakage polyfills via patching built-ins at runtime: cache all global built-ins in the polyfills code and don't call prototype methods from instances.
- Shared helpers should be added to the [`packages/core-js/internals`](./packages/core-js/internals) directory. Reuse already existing helpers.
- Avoid direct import from `/modules/` path in `/internals|modules/` since it will break optimizations via Babel / `swc`. Specify such dependencies in `/es|stable|actual/full/` entries and use something like [`internals/get-built-in`](./packages/core-js/internals/get-built-in.js) helpers.
- Avoid direct import from `/modules/` path in `/internals|modules/` since it will break optimizations via Babel / `swc`. Specify such dependencies with comments like `// dependency: es.string.iterator` directly in your module, they will be automatically added to entries, and use something like [`internals/get-built-in`](./packages/core-js/internals/get-built-in.js) helpers.
- For export the polyfill, in all common cases use [`internals/export`](./packages/core-js/modules/export.js) helper. Use something else only if this helper is not applicable - for example, if you want to polyfill accessors.
- If the code of the pure version implementation should significantly differ from the global version (*that's not a frequent situation, in most cases [`internals/is-pure`](./packages/core-js/modules/is-pure.js) constant is enough*), you can add it to [`packages/core-js-pure/override`](./packages/core-js-pure/override) directory. The rest parts of `core-js-pure` will be copied from `core-js` package.
- Add the feature detection of the polyfill to [`tests/compat/tests.js`](./tests/compat/tests.js), add the compatibility data to [`packages/core-js-compat/src/data.mjs`](./packages/core-js-compat/src/data.mjs), how to do it [see below](#how-to-update-core-js-compat-data), and the name of the polyfill module to [`packages/core-js-compat/src/modules-by-versions.mjs`](./packages/core-js-compat/src/modules-by-versions.mjs) (this data is also used for getting the default list of polyfills at bundling and generation indexes).
- Add it to entry points where it's required: directories [`packages/core-js/es`](./packages/core-js/es), [`packages/core-js/stable`](./packages/core-js/stable), [`packages/core-js/actual`](./packages/core-js/actual), [`packages/core-js/full`](./packages/core-js/full), [`packages/core-js/proposals`](./packages/core-js/proposals), [`packages/core-js/stage`](./packages/core-js/stage) and [`packages/core-js/web`](./packages/core-js/web).
- If the code of the pure version implementation should significantly differ from the global version (*that's not a frequent situation, in most cases [`internals/is-pure`](./packages/core-js/modules/is-pure.js) constant is enough*), you can add it to [`packages/core-js-pure/override`](./packages/core-js-pure/override) directory. The rest parts of `@core-js/pure` will be copied from `core-js` package.
- Add the feature detection of the polyfill to [`tests/compat/tests.js`](./tests/compat/tests.js), add the compatibility data to [`packages/core-js-compat/src/data.mjs`](./packages/core-js-compat/src/data.mjs), how to do it [see below](#how-to-update-core-js-compat-data).
- Add it to entries definitions, see [`scripts/build-entries/entries-definitions.mjs`](./scripts/build-entries/entries-definitions.mjs).
- Add unit tests to [`tests/unit-global`](./tests/unit-global) and [`tests/unit-pure`](./tests/unit-pure).
- Add tests of entry points to [`tests/entries/unit.mjs`](./tests/entries/unit.mjs).
- Make sure that you are following [our coding style](#style-and-standards) and [all tests](#testing) are passed.
- Document it in [site documentation](./docs/web/docs/) and [CHANGELOG.md](./CHANGELOG.md).

[A simple example of adding a new polyfill.](https://github.com/zloirock/core-js/pull/1294/files)

## How to update `core-js-compat` data
## How to update `@core-js/compat` data

For updating `core-js-compat` data:
For updating `@core-js/compat` data:

- If you want to add a new data for a browser, run in this browser `tests/compat/index.html` (tests and results for the actual release are available at [`http://zloirock.github.io/core-js/compat/`](http://zloirock.github.io/core-js/compat/)) and you will see what `core-js` modules are required for this browser.

Expand Down Expand Up @@ -57,7 +57,6 @@ engine | how to run tests | base data inherits from | mandatory ch
`node` | node runner | `chrome` (only ES) | non-ES features | required
`opera` | browser runner | `chrome` | | if inconsistent (!= `chrome` - 16)
`opera-android` | browser runner | `opera`, `chrome-android` | | required
`phantom` | browser runner | `safari` | |
`quest` | browser runner | `chrome-android` | | required
`react-native` | hermes runner | `hermes` | required |
`rhino` | rhino runner | | required |
Expand All @@ -71,9 +70,9 @@ If you have no access to all required browsers / versions of browsers, use [Sauc
The coding style should follow our [`eslint.config.js`](./tests/eslint/eslint.config.js). You can test it by calling [`npm run lint`](#testing). Different places have different syntax and standard library limitations:
- Polyfill implementations should use only ES3 syntax and standard library, they should not use other polyfills from the global scope.
- Unit tests should use the modern syntax with our [minimalistic Babel config](./babel.config.js). Unit tests for the pure version should not use any modern standard library features.
- Tools, scripts and tests, performed in NodeJS, should use only the syntax and the standard library available in NodeJS 8.
- Tools, scripts and tests, performed in NodeJS, should use only the syntax and the standard library available in NodeJS 20.

File names should be in the kebab-case. Name of polyfill modules should follow the naming convention `namespace.subnamespace-where-required.feature-name`, for example, `esnext.set.intersection`. The top-level namespace should be `es` for stable ECMAScript features, `esnext` for ECMAScript proposals and `web` for other web standards.
File names should be in the kebab-case. Name of polyfill modules should follow the naming convention `namespace.subnamespace-where-required.feature-name`, for example, `es.set.intersection`. The top-level namespace should be `es` for stable ECMAScript features, `esnext` for ECMAScript proposals and `web` for other web standards.

## Testing

Expand Down Expand Up @@ -110,19 +109,15 @@ You can run parts of the test case separately:
```sh
npx run-s prepare test-promises
```
- [ECMAScript `Observable` test case](https://github.com/tc39/proposal-observable):
```sh
npx run-s prepare test-observables
```
- CommonJS entry points tests:
```sh
npx run-s prepare test-entries
```
- `core-js-compat` tools tests:
- `@core-js/compat` tools tests:
```sh
npx run-s prepare test-compat-tools
```
- `core-js-builder` tests:
- `@core-js/builder` tests:
```sh
npx run-s prepare test-builder
```
Expand Down
50 changes: 31 additions & 19 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,19 +1,31 @@
Copyright (c) 2014-2025 Denis Pushkarev, 2025 CoreJS Company

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
## core-js experimental version license

### Copyright (c) 2014-2025 Denis Pushkarev, 2025 CoreJS Company

### Non-Commercial Use Only
* The Software may be used strictly for non-commercial purposes. Any commercial use — including but not limited to selling, sublicensing, using in commercial services, or including in commercial products — is expressly prohibited.

### Experimental Use Only
* The Software is provided solely for experimental, research, and evaluation purposes. The user acknowledges that the Software is in a pre-release or developmental stage and may be unstable, contain bugs, or be incomplete.

### Term of the License
* This license is valid only until an official stable version 4 of core-js is released.
* Within 7 calendar days of such release, the user must either:
- Transition to the stable version under its applicable license, or
- Cease all use of this experimental version.
* Continued use beyond this period is strictly prohibited.

### Disclaimer of Warranty
* The Software is provided "as is", without warranty of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, or non-infringement.

### Limited Redistribution
* Redistribution of the Software as part of a non-commercial website or web-based project is permitted, provided that:
- The Software is not modified, and
- It is used solely in accordance with the terms of this license.
* Any other form of redistribution, sublicense, or share is prohibited without prior written permission from the copyright holder.

### Prohibition on Use for AI Training
* The Software, including its source code and any derived works, may not be used, in whole or in part, for the training or fine-tuning of machine learning models or artificial intelligence systems, whether commercial or non-commercial, without explicit prior written permission from the copyright holder.

### Governing Law
* This license shall be governed by and construed in accordance with the laws of the State of Delaware, United States of America, without regard to its conflict of law principles.
Loading