Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
429 commits
Select commit Hold shift + click to select a range
d6e3659
avoid usage `forEach` from prototype on runtime
zloirock Dec 3, 2023
4f45227
`chr` -> `char` (unreserved variable name)
zloirock Dec 5, 2023
9b14026
allow brackets notation on strings instead of `.charAt`
zloirock Dec 5, 2023
0a4a0f4
`hasOwn` -> `in`
zloirock Dec 5, 2023
8ed8bd8
use `Object.create(null)` in one more case
zloirock Dec 5, 2023
add6034
use `Object.create(null)` in one more case
zloirock Dec 5, 2023
d6211ca
drop `Number.fromString` (proposal is dead, semantics is not clear)
zloirock Dec 5, 2023
dc0c079
drop `Function.{ isCallable, isConstructor}` (proposal is dead)
zloirock Dec 5, 2023
53267ba
drop `Math.signbit` (proposal is dead)
zloirock Dec 5, 2023
6e4328b
drop `Math.{ clamp, DEG_PER_RAD, degrees, fscale, RAD_PER_DEG, radian…
zloirock Dec 5, 2023
af71caf
drop `String.prototype.codePoints` (proposal is dead)
zloirock Dec 6, 2023
fe222d5
drop `set(Timeout|Interval)` fixes (required for IE9-)
zloirock Dec 6, 2023
736066c
consider a way setting of a prototype - `Object.setPrototypeOf` or `_…
zloirock Dec 6, 2023
cfc083a
drop `es.number.to-precision` (required for ancient engines like IE8-…
zloirock Dec 6, 2023
3d7272d
drop 'es.date.to-iso-string' (required for IE8- and other ancient eng…
zloirock Dec 6, 2023
5a5ea06
drop `es.error.to-string` (required for IE8-, V8 ~ Chrome 32-, FF10-)
zloirock Dec 6, 2023
7e86171
remove a workaround of V8 ~ Chrome 36- `Object.{ defineProperty, defi…
zloirock Dec 6, 2023
0e4dc3d
drop `es.object.define-property` (required for ES3 engines and V8 ~ C…
zloirock Dec 6, 2023
1edacf0
drop `es.object.define-properties` (required for ES3 engines and V8 ~…
zloirock Dec 6, 2023
ad61a74
drop `es.escape` (supported in all popular modern engines)
zloirock Dec 6, 2023
319bc6e
drop `es.unescape` (supported in all popular modern engines)
zloirock Dec 6, 2023
e928ced
drop `es.string.substr` (supported in all popular modern engines)
zloirock Dec 6, 2023
13894e0
drop `es.date.to-gmt-string` (supported in all popular modern engines)
zloirock Dec 6, 2023
cb7b1ea
drop `es.date. set-year` (supported in all popular modern engines)
zloirock Dec 6, 2023
d6d8ec2
drop `es.date.get-year` (supported in all popular modern engines, req…
zloirock Dec 6, 2023
317d60d
drop `es.array.for-each` (required for ES3 only)
zloirock Dec 6, 2023
ac63947
drop `es.array.every` (required for ES3 only)
zloirock Dec 6, 2023
983e8a6
drop `es.array.some` (required for ES3 only)
zloirock Dec 6, 2023
d745d30
drop PhantomJS from compat data and valid targets since it's planned …
zloirock Dec 6, 2023
56c3b8e
consider `ArrayBuffer` and `DataView` as existent
zloirock Dec 6, 2023
58a8da0
consider strict mode as supported in tests
zloirock Dec 6, 2023
b83d1ce
consider `ArrayBuffer` and `DataView` as existent in compat tests
zloirock Dec 6, 2023
65380d0
drop PhantomJS from Karma
zloirock Dec 7, 2023
9eb43b2
consider basic support of `WeakMap`
zloirock Dec 7, 2023
d0c89c3
consider basic support of `%TypedArray%`
zloirock Dec 7, 2023
ffaf59b
drop fallbacks to ancient FF iterators (with `'@@iterator'` string)
zloirock Dec 8, 2023
9b31dc1
drop one more extra `ArrayBuffer` check
zloirock Dec 8, 2023
7da871b
direct access to `Reflect.ownKeys` in `own-keys` helper
zloirock Dec 8, 2023
082cb6d
use native `Object.defineProperty` in unit tests constants
zloirock Dec 8, 2023
792075d
consider `__proto__` as redefinable (V8 ~ Chrome 27- bug)
zloirock Dec 8, 2023
61b875b
drop a workaround of a strict mode lack case
zloirock Dec 9, 2023
26392ba
consider `Array#lastIndexOf` as existent
zloirock Dec 9, 2023
818cfb2
drop IE8- case from tasks / microtasks, drop `.bind` dep from some in…
zloirock Dec 9, 2023
5e92bfd
drop third argument from `copy-constructor-properties` as not used
zloirock Dec 9, 2023
a4df9b4
drop extra dependency declaration from `array-buffer-byte-length`
zloirock Dec 9, 2023
314c592
drop `.bind` dep from some init time cases, simplify with `.forEach`
zloirock Dec 9, 2023
33e193e
consider `ArrayBuffer` and `DataView` as existent in `web.structured-…
zloirock Dec 9, 2023
f17321d
consider `Uint8Array` as existent in some more cases
zloirock Dec 9, 2023
b9b1e1a
use native `Array#forEach` in one more case
zloirock Dec 9, 2023
ccc32c4
drop some extra dependencies declaration
zloirock Dec 10, 2023
d114355
drop one more `Object.isFrozen` existence check
zloirock Dec 10, 2023
debb522
disable `es/no-typed-arrays` `eslint` rule
zloirock Dec 11, 2023
360c418
consider `Array#indexOf` as existent
zloirock Dec 11, 2023
e8e626a
consider `Array#lastIndexOf` as existent
zloirock Dec 11, 2023
ead43db
use `Float32Array` in `Math.fround` polyfill
zloirock Dec 11, 2023
acda6e2
fix `indexOf` and `lastIndexOf` for some old engines
zloirock Dec 11, 2023
8fcb665
drop Opera Presto workaround from `Number` constructor polyfill
zloirock Dec 11, 2023
d3a96b1
drop detection of IE8- only bug from `Number#toExponential` polyfill
zloirock Dec 11, 2023
bae9f90
drop detection of ancient V8 only bug from `Number#toFixed` polyfill
zloirock Dec 11, 2023
514525a
drop a workaround for ancient engines whose `exec` methods don't cons…
zloirock Dec 11, 2023
90b1eea
drop a workaround for a IE bug with non-enumerable integer keys on `n…
zloirock Dec 11, 2023
b5b5f6d
reuse `internal-state` abstraction in `Symbol` polyfill
zloirock Dec 12, 2023
247686b
implicit `parseInt` / `parseFloat` dependencies in `Number.{ parseInt…
zloirock Dec 13, 2023
5c11a04
replace `fastKey` logic with native `Map`
zloirock Dec 14, 2023
a77ddbf
finally drop `internal-metadata` and `hidden-keys` logic, use native …
zloirock Dec 15, 2023
f57f881
use native `Map` in `composite-key`
zloirock Dec 15, 2023
64fc8ff
move some modules above in the order of modules loading to ensure pro…
zloirock Dec 18, 2023
87a0ce5
move `internal/object-assign` to `es.object.assign`
zloirock Dec 18, 2023
f2781ca
inline `to-uint8-clamped`
zloirock Dec 19, 2023
cb2fb3d
use array iteration methods in some simple cases
zloirock Dec 20, 2023
7de6664
drop ignore of old V8 / WebKit number conversion bug
zloirock Dec 20, 2023
f1a7e4b
move `DataView`-related features from `internals/array-buffer` to `es…
zloirock Dec 20, 2023
065a09c
move `ArrayBuffer`-related features from `internals/array-buffer` to …
zloirock Dec 20, 2023
50dd1d8
extract `DataView#{ setInt8, setUint8 }` fixes as separate modules
zloirock Dec 20, 2023
3477dc8
extract `DataView.prototype[@@toStringTag]` as a separate module
zloirock Dec 20, 2023
d64129c
extract `ArrayBuffer.prototype[@@toStringTag]` as a separate module
zloirock Dec 20, 2023
6133fbb
extract `ArrayBuffer[@@species]` as a separate module
zloirock Dec 20, 2023
cf0a971
extract `{ Map, Set }[@@species]` as a separate module
zloirock Dec 21, 2023
d96e337
join typed array constructors lists
zloirock Dec 23, 2023
1b11848
move `ArrayBuffer.isView` logic directly to `es.array-buffer.is-view`
zloirock Dec 23, 2023
db7d0f5
extract `a-typed-array-constructor` helper to a separate module
zloirock Dec 23, 2023
29b00cb
extract `get-typed-array-constructor` helper to a separate module
zloirock Dec 23, 2023
ba169b9
move typed arrays `@@toStringTag` to metadata
zloirock Dec 23, 2023
4c18e19
extract `export-typed-array-static` helper to a separate module
zloirock Dec 23, 2023
01e3212
extract `export-typed-array-method` helper to a separate module
zloirock Dec 23, 2023
5d9de44
extract `a-typed-array` helper to a separate module
zloirock Dec 23, 2023
0943772
extract `is-typed-array` helper to a separate module
zloirock Dec 23, 2023
fb31817
rename `array-buffer-view-core` -> `typed-array-core` since now it's …
zloirock Dec 23, 2023
5610c7f
use `classof-raw` in `is-typed-array` to avoid unnecessary `@@toStrin…
zloirock Dec 23, 2023
8751b19
extract `%TypedArrayPrototype%[@@toStringTag]` to a separate module
zloirock Dec 24, 2023
c9cecb6
redefine `DOMException#toString` as unsafe
zloirock Dec 24, 2023
9218c07
rewrite `export-typed-array-static` helper
zloirock Dec 24, 2023
42bfa5f
rework `export-typed-array-static` helper, fix some `%TypedArray%` me…
zloirock Dec 24, 2023
968681a
update `es.typed-array.subarray` compat data
zloirock Dec 24, 2023
9819995
extract `%TypedArray%[@@species]` to a separate module (and fix it)
zloirock Dec 25, 2023
fae7e9b
drop `ARRAY_BUFFER_VIEWS_SUPPORT` check from compat tests
zloirock Dec 25, 2023
612e349
avoid overwriting `.TypedArrayConstructor` by wrappers in typed array…
zloirock Dec 25, 2023
fe72edd
simplify `prototype.constructor` overwriting in typed array wrappers
zloirock Dec 25, 2023
5f9d3c8
`BYTES_PER_ELEMENT` constants of typed array constructors and prototy…
zloirock Dec 25, 2023
80ffce9
drop typed arrays elements descriptors tests since it's no longer `co…
zloirock Dec 25, 2023
59fb15c
drop typed arrays `.sham` flag test since it no longer makes sense
zloirock Dec 25, 2023
826a9b7
enable some tests for all envs
zloirock Dec 25, 2023
2200d9b
rename for consistency with actual module name
zloirock Dec 25, 2023
1f65866
reuse `copy-constructor-properties` in `typed-array-constructor`, fix…
zloirock Dec 25, 2023
fd1f2b0
rework `inherit-if-required`
zloirock Dec 26, 2023
adfcede
rework `typed-array-core`
zloirock Dec 26, 2023
a7241f9
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
f11467a
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
4499db7
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
005f673
allow `WeakMap`, `Map` and `Set` in `eslint` config
zloirock Dec 26, 2023
7e0a110
extract `internal-state-getter-for` helper
zloirock Dec 26, 2023
e7e34f5
drop unused `internal-state -> has` helper
zloirock Dec 26, 2023
5a0d5c4
some changes in `shared-store`
zloirock Dec 27, 2023
a6c3684
add `object-set-prototype-of-simple` helper
zloirock Dec 27, 2023
93bbd30
drop `is-forced` logic as not viable in the current form
zloirock Dec 27, 2023
3908bdc
drop extra `global` usage
zloirock Dec 27, 2023
b8641a9
rename internal `global` reference to `globalThis` for consistency wi…
zloirock Dec 27, 2023
292b07e
drop a workaround of ancient Nashorn `Object.prototype.propertyIsEnum…
zloirock Dec 28, 2023
e3d7996
drop some typed arrays existence checks
zloirock Dec 28, 2023
effb9d5
simplify `typed-array-core`
zloirock Jan 2, 2024
8bd88ee
drop a workaround of Qt Script bug since it's anyway based on unsuppo…
zloirock Jan 3, 2024
0212e2a
bump `DOMException` above the rest web modules in the order of loading
zloirock Jan 3, 2024
005899e
don't cash used only on init time built-ins, some other minor improve…
zloirock Jan 3, 2024
8f9b3e8
drop internal `Iterators` abstraction
zloirock Jan 3, 2024
84b4242
return internal `Iterators` store for the pure version
zloirock Jan 5, 2024
7f407e4
simplify some cases of `Array` normalization logic, split `es.array.i…
zloirock Jan 5, 2024
9d88204
drop ancient `iterator-define` logic
zloirock Jan 5, 2024
a1bc678
`iterators-core` -> `iterator-prototype`
zloirock Jan 5, 2024
0a48320
ensure some dependencies
zloirock Jan 5, 2024
07b2c88
split `es.typed-array.iterator`
zloirock Jan 6, 2024
6adee57
split `web.dom-collections.iterator`
zloirock Jan 6, 2024
d3dbdb6
update readme
zloirock Jan 6, 2024
cf957b2
use `String#repeat` as an implicit dependency
zloirock Jan 7, 2024
979a8b6
`make-built-in` `options.{ getter, setter -> prefix }`
zloirock Jan 7, 2024
c9a00db
fix names
zloirock Jan 8, 2024
430d3f6
simplify `make-built-in`
zloirock Jan 8, 2024
53a1cb0
fix names
zloirock Jan 8, 2024
090d158
drop `Symbol.withoutSetter`
zloirock Jan 8, 2024
10f7f9b
drop keys composition proposal as dead (no activity 5+ years), I hope…
zloirock Jan 10, 2024
50de7d9
drop new collections methods proposal as dead (no activity 6+ years),…
zloirock Jan 11, 2024
4e5615c
mark `es.array-buffer.species` as not supported by hermes
zloirock Jan 12, 2024
b96de10
don't use `@@toStringTag` on typed array check
zloirock Jan 13, 2024
6d6e2ec
drop unneded `.sham` flag check
zloirock Jan 13, 2024
39d3752
drop `copyConstructorProperties` from global version `export` as dupl…
zloirock Jan 14, 2024
a248c5a
drop some obsolete entries definitions
zloirock Jan 17, 2024
94f8d4d
fix filter in `build-entries` script
zloirock Jan 17, 2024
b365de2
drop some arity checks for the pure version
zloirock Jan 17, 2024
0ca8089
some changes in export logic
zloirock Jan 18, 2024
b508b15
use common export on `Object#toString`
zloirock Jan 18, 2024
12e8349
ignore `scripts/clean-dependencies` `package-lock`
zloirock Jan 18, 2024
a3cbe9a
build instance entries
zloirock Jan 22, 2024
cbec274
add entries definitions for `ArrayBuffer` and `DataView`
zloirock Jan 23, 2024
e20596e
build entries for common iterators
zloirock Jan 24, 2024
ba5bc84
add entries definitions for `Symbol`
zloirock Jan 24, 2024
01e3251
build entries for typed arrays
zloirock Jan 24, 2024
e29049a
build entries for regexp
zloirock Jan 25, 2024
206c745
build entries for DOM collections
zloirock Jan 25, 2024
adb1433
add some missed entries definitions
zloirock Jan 25, 2024
6376b8b
drop /actual/ entries for async iterator helpers since now it's on st…
zloirock Jan 26, 2024
803f26f
drop some extra arity tests from the pure version
zloirock Jan 26, 2024
e2afc6c
drop unneded `to-string-tag` entries
zloirock Jan 28, 2024
14abd89
rework / drop some entries and definitions
zloirock Jan 28, 2024
a47834b
drop `stage/4` entry as useless
zloirock Jan 28, 2024
c3829a9
tweak some entries definitions and dependencies
zloirock Jan 29, 2024
9b5d393
tweak some entries definitions and dependencies
zloirock Jan 29, 2024
bd94c5f
tweak some entries definitions, dependencies declaration and templates
zloirock Jan 30, 2024
4437d0d
declare some missed dependencies
zloirock Jan 31, 2024
be6c2aa
tweak some entries definitions
zloirock Feb 1, 2024
db8f29b
use generated entries
zloirock Feb 1, 2024
1b67ad4
move tests indexes building to `bundle-tests` script
zloirock Feb 1, 2024
a8d4a40
drop legacy entries for `ArrayBuffer#transfer` proposal
zloirock Feb 8, 2024
47ce6a6
restore `Promise.try` proposal
zloirock Feb 8, 2024
085237b
no longer publish `core-js` on `deno.land/x`
zloirock Feb 13, 2024
31b4682
fix `access` in `package.json` files
zloirock Feb 13, 2024
284cb26
move `debug-get-dependencies` to tests folder
zloirock Feb 18, 2024
29719b8
rework building entries
zloirock Feb 18, 2024
b4ec3c0
update docs
zloirock Feb 18, 2024
6d2f25f
`ifModules` -> `necessary`
zloirock Feb 18, 2024
6bec192
build exports fields
zloirock Mar 10, 2024
a1dec70
change the style of `$namespace` entry template usage
zloirock Mar 19, 2024
18c9c91
change the style of `$helper` entry template usage
zloirock Mar 19, 2024
350d511
change the style of `$prototypeIterator` entry template usage
zloirock Mar 19, 2024
ba35cc6
change the style of `$virtualIterator` entry template usage
zloirock Mar 19, 2024
cbab77a
change the style of `$staticWithContext` entry template usage
zloirock Mar 19, 2024
c714e89
change the style of `$patchableStatic` entry template usage
zloirock Mar 19, 2024
47f5abc
change the order of some keys
zloirock Mar 19, 2024
2920c09
change the style of `$static` entry template usage
zloirock Mar 19, 2024
b9efac4
change the style of `$prototype` and `$virtual` entry templates usage
zloirock Mar 19, 2024
0a729d4
require `new` for `DataView` constructor
zloirock Mar 20, 2024
2992cc0
update dependencies
zloirock Mar 21, 2024
bda9954
patch `DataView` for proper handling `undefined` as `byteOffset` and …
zloirock Mar 21, 2024
37f8d85
change engine keys for compat tools / data
zloirock Mar 24, 2024
01361df
rename some `entries-definitions` params
zloirock Mar 24, 2024
88a4461
build entries data for `@core-js/compat` on building entries
zloirock Mar 24, 2024
82a3e43
load `padStart` as an optional dependency
zloirock Mar 28, 2024
d136300
add a couple of missed entries definitions
zloirock Apr 1, 2024
88d0b08
add a missed entry
zloirock Apr 2, 2024
ec1e166
start experimental building built-in definitions from entries definit…
zloirock Apr 2, 2024
2d54136
drop `postinstall`
zloirock Jul 29, 2024
5b3f71e
drop legacy iterator helpers modules
zloirock Oct 8, 2024
6577320
replace `internals/math-log2 ` with module dependency
zloirock Nov 24, 2024
3706f24
update after rebasing
zloirock Dec 28, 2024
5cb81c4
update Node version
zloirock Jul 4, 2025
c6f2e17
fix `Array.prototype[@@iterator]` compat test
zloirock Jul 9, 2025
0a4ab09
Revert "change engine keys for compat tools / data"
zloirock Jul 9, 2025
3c91b7f
avoid creation of some unneeded entries, drop `necessaryModules` - no…
zloirock Jul 12, 2025
f2740c0
fix some dependencies
zloirock Jul 12, 2025
1cea589
test some entries
zloirock Jul 16, 2025
fcb7188
update dependencies and fix package.json fields
zloirock Jul 17, 2025
afbe8bf
no longer require manual adding new modules to `modules-by-versions`
zloirock Aug 2, 2025
347be84
add `entries-by-versions` data
zloirock Aug 2, 2025
64e26d8
add `@core-js/compat/get-entries-list-for-target-version` helper
zloirock Aug 2, 2025
da9be52
add a template of a babel plugin and tests runner
zloirock Aug 3, 2025
a0c119c
replace /virtual/ entries with /prototype/
zloirock Aug 5, 2025
560310d
drop building built-ins definitions from entries definitions
zloirock Aug 5, 2025
ffa238c
tweak entries / dependencies
zloirock Aug 9, 2025
dfadd7d
prototype built-in definitions
zloirock Aug 9, 2025
68303ff
drop `core-js/` prefix from entries in compat / builder packages API
zloirock Aug 10, 2025
c004d81
drop `@core-js/{ compat, builder }` strings-namespaces support in `mo…
zloirock Aug 11, 2025
dd033f1
update hermes data
zloirock Aug 12, 2025
8400556
prototype global plugin modes
zloirock Aug 22, 2025
7186101
work on plugin
zloirock Aug 23, 2025
acee0c0
add some fixtures
zloirock Aug 23, 2025
2e71b8a
test babel plugin on ci
zloirock Aug 23, 2025
a9de82c
add some fixtures
zloirock Aug 24, 2025
a0dcc72
basic type optimization for `usage-global`
zloirock Aug 24, 2025
e2e20d5
better optimization by hint in `usage-global`
zloirock Aug 25, 2025
0f8f1ad
add `min-args` plugin filter
zloirock Aug 26, 2025
f9fb7a6
add `arg-is-string` plugin filter
zloirock Aug 26, 2025
a938b6c
drop IE8- `unshift` fix
zloirock Aug 26, 2025
d10b599
drop one more ancient IE workaround
zloirock Aug 26, 2025
b518358
drop IE8- `sort` fix
zloirock Aug 26, 2025
50cd81a
drop IE8 `stringify` fix
zloirock Aug 26, 2025
a45034a
drop Safari 6 `%TypedArray%.prototype.toLocaleString` fix
zloirock Aug 26, 2025
639ebd5
add `min-args` filter to `JSON.parse`
zloirock Aug 26, 2025
7b6f880
add `min-args` filter to `Number#toExponential`
zloirock Aug 26, 2025
15c5dfe
add `arg-is-object ` plugin filter
zloirock Aug 26, 2025
cec3868
inject polyfills in visitor in `usage-global`
zloirock Aug 28, 2025
6b8e2e1
split `esnext.observable` -> `esnext.observable.{ constructor, from, …
zloirock Oct 4, 2023
b241971
drop old TC39 `Observable` proposal in favor of future adding new Web…
zloirock Oct 13, 2023
05b8222
drop legacy iterator helpers modules
zloirock Oct 8, 2024
3fd5028
update after rebasing
zloirock Dec 28, 2024
ab31f48
add a template of a babel plugin and tests runner
zloirock Aug 3, 2025
06e40b2
Await dictionary of Promises proposal
slowcheetah Sep 15, 2025
18cfef4
Update after rebase
slowcheetah Sep 15, 2025
1e059e4
Await dictionary of Promises proposal
slowcheetah Sep 15, 2025
3dcfa6e
Update Promise.allKeyed tests
slowcheetah Sep 18, 2025
1071719
Update docs for v4
slowcheetah Oct 9, 2025
2cba028
Await dictionary docs
slowcheetah Oct 14, 2025
426fa83
Merge pull request #1478 from zloirock/v4-await-dictionary
zloirock Oct 14, 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 @@ -63,7 +63,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 @@ -86,4 +86,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 @@ -9,37 +9,39 @@ node_modules/
.idea

/docs/web/blog/index.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