Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
427 commits
Select commit Hold shift + click to select a range
0dc8ab1
drop workarounds for non-enumerable string chars
zloirock Dec 1, 2023
be23595
`chr` -> `char` (unreserved variable name)
zloirock Dec 2, 2023
e7d1e24
avoid usage `forEach` from prototype on runtime
zloirock Dec 3, 2023
c35146e
`chr` -> `char` (unreserved variable name)
zloirock Dec 5, 2023
cbfcd7d
allow brackets notation on strings instead of `.charAt`
zloirock Dec 5, 2023
01c5588
`hasOwn` -> `in`
zloirock Dec 5, 2023
c52abae
use `Object.create(null)` in one more case
zloirock Dec 5, 2023
29c1a2e
use `Object.create(null)` in one more case
zloirock Dec 5, 2023
02fd4af
drop `Number.fromString` (proposal is dead, semantics is not clear)
zloirock Dec 5, 2023
96858d1
drop `Function.{ isCallable, isConstructor}` (proposal is dead)
zloirock Dec 5, 2023
e32b5b4
drop `Math.signbit` (proposal is dead)
zloirock Dec 5, 2023
ec9cecf
drop `Math.{ clamp, DEG_PER_RAD, degrees, fscale, RAD_PER_DEG, radian…
zloirock Dec 5, 2023
cdc1c4a
drop `String.prototype.codePoints` (proposal is dead)
zloirock Dec 6, 2023
96b344a
drop `set(Timeout|Interval)` fixes (required for IE9-)
zloirock Dec 6, 2023
4701a8a
consider a way setting of a prototype - `Object.setPrototypeOf` or `_…
zloirock Dec 6, 2023
8de04f1
drop `es.number.to-precision` (required for ancient engines like IE8-…
zloirock Dec 6, 2023
70f147c
drop 'es.date.to-iso-string' (required for IE8- and other ancient eng…
zloirock Dec 6, 2023
b9f205a
drop `es.error.to-string` (required for IE8-, V8 ~ Chrome 32-, FF10-)
zloirock Dec 6, 2023
8131aa4
remove a workaround of V8 ~ Chrome 36- `Object.{ defineProperty, defi…
zloirock Dec 6, 2023
d688dcf
drop `es.object.define-property` (required for ES3 engines and V8 ~ C…
zloirock Dec 6, 2023
af573eb
drop `es.object.define-properties` (required for ES3 engines and V8 ~…
zloirock Dec 6, 2023
a064cda
drop `es.escape` (supported in all popular modern engines)
zloirock Dec 6, 2023
d7da117
drop `es.unescape` (supported in all popular modern engines)
zloirock Dec 6, 2023
9347162
drop `es.string.substr` (supported in all popular modern engines)
zloirock Dec 6, 2023
edb3056
drop `es.date.to-gmt-string` (supported in all popular modern engines)
zloirock Dec 6, 2023
62a6c6b
drop `es.date. set-year` (supported in all popular modern engines)
zloirock Dec 6, 2023
b6b8b7e
drop `es.date.get-year` (supported in all popular modern engines, req…
zloirock Dec 6, 2023
e1ba81b
drop `es.array.for-each` (required for ES3 only)
zloirock Dec 6, 2023
d5ab25a
drop `es.array.every` (required for ES3 only)
zloirock Dec 6, 2023
1bfadf9
drop `es.array.some` (required for ES3 only)
zloirock Dec 6, 2023
c248470
drop PhantomJS from compat data and valid targets since it's planned …
zloirock Dec 6, 2023
01b979c
consider `ArrayBuffer` and `DataView` as existent
zloirock Dec 6, 2023
ede54ef
consider strict mode as supported in tests
zloirock Dec 6, 2023
7c48e7d
consider `ArrayBuffer` and `DataView` as existent in compat tests
zloirock Dec 6, 2023
0299599
drop PhantomJS from Karma
zloirock Dec 7, 2023
3c3d129
consider basic support of `WeakMap`
zloirock Dec 7, 2023
e2f20ca
consider basic support of `%TypedArray%`
zloirock Dec 7, 2023
1e83410
drop fallbacks to ancient FF iterators (with `'@@iterator'` string)
zloirock Dec 8, 2023
c631125
drop one more extra `ArrayBuffer` check
zloirock Dec 8, 2023
2e51f75
direct access to `Reflect.ownKeys` in `own-keys` helper
zloirock Dec 8, 2023
302c439
use native `Object.defineProperty` in unit tests constants
zloirock Dec 8, 2023
45d6165
consider `__proto__` as redefinable (V8 ~ Chrome 27- bug)
zloirock Dec 8, 2023
a5ceba6
drop a workaround of a strict mode lack case
zloirock Dec 9, 2023
f4123dc
consider `Array#lastIndexOf` as existent
zloirock Dec 9, 2023
5485cd4
drop IE8- case from tasks / microtasks, drop `.bind` dep from some in…
zloirock Dec 9, 2023
a52a172
drop third argument from `copy-constructor-properties` as not used
zloirock Dec 9, 2023
b2e5c2e
drop extra dependency declaration from `array-buffer-byte-length`
zloirock Dec 9, 2023
0b064d3
drop `.bind` dep from some init time cases, simplify with `.forEach`
zloirock Dec 9, 2023
6826fa6
consider `ArrayBuffer` and `DataView` as existent in `web.structured-…
zloirock Dec 9, 2023
d8e48bd
consider `Uint8Array` as existent in some more cases
zloirock Dec 9, 2023
c0dffb8
use native `Array#forEach` in one more case
zloirock Dec 9, 2023
5d7748c
drop some extra dependencies declaration
zloirock Dec 10, 2023
99d0a16
drop one more `Object.isFrozen` existence check
zloirock Dec 10, 2023
f7c47f9
disable `es/no-typed-arrays` `eslint` rule
zloirock Dec 11, 2023
fe0bd27
consider `Array#indexOf` as existent
zloirock Dec 11, 2023
2ad35d3
consider `Array#lastIndexOf` as existent
zloirock Dec 11, 2023
5b12162
use `Float32Array` in `Math.fround` polyfill
zloirock Dec 11, 2023
1f6be4a
fix `indexOf` and `lastIndexOf` for some old engines
zloirock Dec 11, 2023
af4913b
drop Opera Presto workaround from `Number` constructor polyfill
zloirock Dec 11, 2023
025891c
drop detection of IE8- only bug from `Number#toExponential` polyfill
zloirock Dec 11, 2023
c31783d
drop detection of ancient V8 only bug from `Number#toFixed` polyfill
zloirock Dec 11, 2023
1c9732a
drop a workaround for ancient engines whose `exec` methods don't cons…
zloirock Dec 11, 2023
b872247
drop a workaround for a IE bug with non-enumerable integer keys on `n…
zloirock Dec 11, 2023
de3a27b
reuse `internal-state` abstraction in `Symbol` polyfill
zloirock Dec 12, 2023
c6702ac
implicit `parseInt` / `parseFloat` dependencies in `Number.{ parseInt…
zloirock Dec 13, 2023
cf104f4
replace `fastKey` logic with native `Map`
zloirock Dec 14, 2023
a3585f4
finally drop `internal-metadata` and `hidden-keys` logic, use native …
zloirock Dec 15, 2023
883008f
use native `Map` in `composite-key`
zloirock Dec 15, 2023
57de315
move some modules above in the order of modules loading to ensure pro…
zloirock Dec 18, 2023
e51b186
move `internal/object-assign` to `es.object.assign`
zloirock Dec 18, 2023
82cf3dc
inline `to-uint8-clamped`
zloirock Dec 19, 2023
2fbce0d
use array iteration methods in some simple cases
zloirock Dec 20, 2023
89ce92b
drop ignore of old V8 / WebKit number conversion bug
zloirock Dec 20, 2023
cc8ce62
move `DataView`-related features from `internals/array-buffer` to `es…
zloirock Dec 20, 2023
f9177a4
move `ArrayBuffer`-related features from `internals/array-buffer` to …
zloirock Dec 20, 2023
85ee1a0
extract `DataView#{ setInt8, setUint8 }` fixes as separate modules
zloirock Dec 20, 2023
5625cc6
extract `DataView.prototype[@@toStringTag]` as a separate module
zloirock Dec 20, 2023
2858dae
extract `ArrayBuffer.prototype[@@toStringTag]` as a separate module
zloirock Dec 20, 2023
ced6454
extract `ArrayBuffer[@@species]` as a separate module
zloirock Dec 20, 2023
3da52e6
extract `{ Map, Set }[@@species]` as a separate module
zloirock Dec 21, 2023
0375a08
join typed array constructors lists
zloirock Dec 23, 2023
9b63a81
move `ArrayBuffer.isView` logic directly to `es.array-buffer.is-view`
zloirock Dec 23, 2023
729e56f
extract `a-typed-array-constructor` helper to a separate module
zloirock Dec 23, 2023
dfa3abd
extract `get-typed-array-constructor` helper to a separate module
zloirock Dec 23, 2023
a2f21c4
move typed arrays `@@toStringTag` to metadata
zloirock Dec 23, 2023
8cf28d9
extract `export-typed-array-static` helper to a separate module
zloirock Dec 23, 2023
ae26d2d
extract `export-typed-array-method` helper to a separate module
zloirock Dec 23, 2023
b1b399e
extract `a-typed-array` helper to a separate module
zloirock Dec 23, 2023
1287440
extract `is-typed-array` helper to a separate module
zloirock Dec 23, 2023
bd83966
rename `array-buffer-view-core` -> `typed-array-core` since now it's …
zloirock Dec 23, 2023
373a199
use `classof-raw` in `is-typed-array` to avoid unnecessary `@@toStrin…
zloirock Dec 23, 2023
5f2329b
extract `%TypedArrayPrototype%[@@toStringTag]` to a separate module
zloirock Dec 24, 2023
c821578
redefine `DOMException#toString` as unsafe
zloirock Dec 24, 2023
da8b9b1
rewrite `export-typed-array-static` helper
zloirock Dec 24, 2023
c23e7d1
rework `export-typed-array-static` helper, fix some `%TypedArray%` me…
zloirock Dec 24, 2023
760da6b
update `es.typed-array.subarray` compat data
zloirock Dec 24, 2023
32ba88b
extract `%TypedArray%[@@species]` to a separate module (and fix it)
zloirock Dec 25, 2023
7b5163c
drop `ARRAY_BUFFER_VIEWS_SUPPORT` check from compat tests
zloirock Dec 25, 2023
57d84cb
avoid overwriting `.TypedArrayConstructor` by wrappers in typed array…
zloirock Dec 25, 2023
65311ea
simplify `prototype.constructor` overwriting in typed array wrappers
zloirock Dec 25, 2023
57119b5
`BYTES_PER_ELEMENT` constants of typed array constructors and prototy…
zloirock Dec 25, 2023
ec7b22d
drop typed arrays elements descriptors tests since it's no longer `co…
zloirock Dec 25, 2023
53f182d
drop typed arrays `.sham` flag test since it no longer makes sense
zloirock Dec 25, 2023
3360b61
enable some tests for all envs
zloirock Dec 25, 2023
9cc4c76
rename for consistency with actual module name
zloirock Dec 25, 2023
b9392f6
reuse `copy-constructor-properties` in `typed-array-constructor`, fix…
zloirock Dec 25, 2023
0ec5595
rework `inherit-if-required`
zloirock Dec 26, 2023
8e6b942
rework `typed-array-core`
zloirock Dec 26, 2023
a9e7d7f
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
91b6d7f
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
30d9eec
use `Object.keys().forEach()` instead of `for-in` in some cases
zloirock Dec 26, 2023
951d351
allow `WeakMap`, `Map` and `Set` in `eslint` config
zloirock Dec 26, 2023
8251945
extract `internal-state-getter-for` helper
zloirock Dec 26, 2023
1724d0a
drop unused `internal-state -> has` helper
zloirock Dec 26, 2023
df8e7be
some changes in `shared-store`
zloirock Dec 27, 2023
427190d
add `object-set-prototype-of-simple` helper
zloirock Dec 27, 2023
a062af7
drop `is-forced` logic as not viable in the current form
zloirock Dec 27, 2023
b0a168d
drop extra `global` usage
zloirock Dec 27, 2023
9dcb9a5
rename internal `global` reference to `globalThis` for consistency wi…
zloirock Dec 27, 2023
554243e
drop a workaround of ancient Nashorn `Object.prototype.propertyIsEnum…
zloirock Dec 28, 2023
4ff351e
drop some typed arrays existence checks
zloirock Dec 28, 2023
090ebca
simplify `typed-array-core`
zloirock Jan 2, 2024
9687665
drop a workaround of Qt Script bug since it's anyway based on unsuppo…
zloirock Jan 3, 2024
5aa5c10
bump `DOMException` above the rest web modules in the order of loading
zloirock Jan 3, 2024
b6d7126
don't cash used only on init time built-ins, some other minor improve…
zloirock Jan 3, 2024
b37d8de
drop internal `Iterators` abstraction
zloirock Jan 3, 2024
970548a
return internal `Iterators` store for the pure version
zloirock Jan 5, 2024
6710400
simplify some cases of `Array` normalization logic, split `es.array.i…
zloirock Jan 5, 2024
f5dd1c5
drop ancient `iterator-define` logic
zloirock Jan 5, 2024
353f7e5
`iterators-core` -> `iterator-prototype`
zloirock Jan 5, 2024
20be9f1
ensure some dependencies
zloirock Jan 5, 2024
23195b4
split `es.typed-array.iterator`
zloirock Jan 6, 2024
d12ce5f
split `web.dom-collections.iterator`
zloirock Jan 6, 2024
7c47d2d
update readme
zloirock Jan 6, 2024
f5690fa
use `String#repeat` as an implicit dependency
zloirock Jan 7, 2024
e3729ef
`make-built-in` `options.{ getter, setter -> prefix }`
zloirock Jan 7, 2024
4af4fd6
fix names
zloirock Jan 8, 2024
4ada6e0
simplify `make-built-in`
zloirock Jan 8, 2024
1013d9d
fix names
zloirock Jan 8, 2024
5af2b8d
drop `Symbol.withoutSetter`
zloirock Jan 8, 2024
98d1a9f
drop keys composition proposal as dead (no activity 5+ years), I hope…
zloirock Jan 10, 2024
9d8ead7
drop new collections methods proposal as dead (no activity 6+ years),…
zloirock Jan 11, 2024
72c01d1
mark `es.array-buffer.species` as not supported by hermes
zloirock Jan 12, 2024
991323e
don't use `@@toStringTag` on typed array check
zloirock Jan 13, 2024
a6deff1
drop unneded `.sham` flag check
zloirock Jan 13, 2024
36aad4d
drop `copyConstructorProperties` from global version `export` as dupl…
zloirock Jan 14, 2024
815ea38
drop some obsolete entries definitions
zloirock Jan 17, 2024
a37dcf6
fix filter in `build-entries` script
zloirock Jan 17, 2024
7ccd87d
drop some arity checks for the pure version
zloirock Jan 17, 2024
c67d7a0
some changes in export logic
zloirock Jan 18, 2024
a94b8f9
use common export on `Object#toString`
zloirock Jan 18, 2024
9412ba6
ignore `scripts/clean-dependencies` `package-lock`
zloirock Jan 18, 2024
d644874
build instance entries
zloirock Jan 22, 2024
43356b3
add entries definitions for `ArrayBuffer` and `DataView`
zloirock Jan 23, 2024
e905e47
build entries for common iterators
zloirock Jan 24, 2024
e0d39d7
add entries definitions for `Symbol`
zloirock Jan 24, 2024
cba7ee4
build entries for typed arrays
zloirock Jan 24, 2024
8ec6fdf
build entries for regexp
zloirock Jan 25, 2024
1c5e765
build entries for DOM collections
zloirock Jan 25, 2024
1be4174
add some missed entries definitions
zloirock Jan 25, 2024
ae53c99
drop /actual/ entries for async iterator helpers since now it's on st…
zloirock Jan 26, 2024
62ec544
drop some extra arity tests from the pure version
zloirock Jan 26, 2024
93626b8
drop unneded `to-string-tag` entries
zloirock Jan 28, 2024
78363e0
rework / drop some entries and definitions
zloirock Jan 28, 2024
7c895a4
drop `stage/4` entry as useless
zloirock Jan 28, 2024
7b905b4
tweak some entries definitions and dependencies
zloirock Jan 29, 2024
a74ccdd
tweak some entries definitions and dependencies
zloirock Jan 29, 2024
b6cafdd
tweak some entries definitions, dependencies declaration and templates
zloirock Jan 30, 2024
128cf7e
declare some missed dependencies
zloirock Jan 31, 2024
585e97c
tweak some entries definitions
zloirock Feb 1, 2024
a0b5b2e
use generated entries
zloirock Feb 1, 2024
3d912a5
move tests indexes building to `bundle-tests` script
zloirock Feb 1, 2024
f0a5147
drop legacy entries for `ArrayBuffer#transfer` proposal
zloirock Feb 8, 2024
d97dda4
restore `Promise.try` proposal
zloirock Feb 8, 2024
56385ac
no longer publish `core-js` on `deno.land/x`
zloirock Feb 13, 2024
09c816b
fix `access` in `package.json` files
zloirock Feb 13, 2024
517efaa
move `debug-get-dependencies` to tests folder
zloirock Feb 18, 2024
36afa93
rework building entries
zloirock Feb 18, 2024
d9c7ffd
update docs
zloirock Feb 18, 2024
41c3056
`ifModules` -> `necessary`
zloirock Feb 18, 2024
0240b9a
build exports fields
zloirock Mar 10, 2024
a0c77d7
change the style of `$namespace` entry template usage
zloirock Mar 19, 2024
710047d
change the style of `$helper` entry template usage
zloirock Mar 19, 2024
2dba38a
change the style of `$prototypeIterator` entry template usage
zloirock Mar 19, 2024
07af3ed
change the style of `$virtualIterator` entry template usage
zloirock Mar 19, 2024
990b02b
change the style of `$staticWithContext` entry template usage
zloirock Mar 19, 2024
c6aa5d7
change the style of `$patchableStatic` entry template usage
zloirock Mar 19, 2024
d5e1520
change the order of some keys
zloirock Mar 19, 2024
77c0047
change the style of `$static` entry template usage
zloirock Mar 19, 2024
a70938a
change the style of `$prototype` and `$virtual` entry templates usage
zloirock Mar 19, 2024
5e52b39
require `new` for `DataView` constructor
zloirock Mar 20, 2024
a91f3ea
update dependencies
zloirock Mar 21, 2024
2678fd4
patch `DataView` for proper handling `undefined` as `byteOffset` and …
zloirock Mar 21, 2024
aecd779
change engine keys for compat tools / data
zloirock Mar 24, 2024
b5c7626
rename some `entries-definitions` params
zloirock Mar 24, 2024
528ba0d
build entries data for `@core-js/compat` on building entries
zloirock Mar 24, 2024
c785e58
load `padStart` as an optional dependency
zloirock Mar 28, 2024
2a3c744
add a couple of missed entries definitions
zloirock Apr 1, 2024
832d576
add a missed entry
zloirock Apr 2, 2024
876fc4b
start experimental building built-in definitions from entries definit…
zloirock Apr 2, 2024
d469064
drop `postinstall`
zloirock Jul 29, 2024
dd1fbd4
drop legacy iterator helpers modules
zloirock Oct 8, 2024
144850d
replace `internals/math-log2 ` with module dependency
zloirock Nov 24, 2024
6461e84
update after rebasing
zloirock Dec 28, 2024
d1723e3
update Node version
zloirock Jul 4, 2025
1cb74d4
fix `Array.prototype[@@iterator]` compat test
zloirock Jul 9, 2025
2a18592
Revert "change engine keys for compat tools / data"
zloirock Jul 9, 2025
3d09f11
avoid creation of some unneeded entries, drop `necessaryModules` - no…
zloirock Jul 12, 2025
9d70773
fix some dependencies
zloirock Jul 12, 2025
b2e7be1
test some entries
zloirock Jul 16, 2025
c67fb58
update dependencies and fix package.json fields
zloirock Jul 17, 2025
3403ecb
no longer require manual adding new modules to `modules-by-versions`
zloirock Aug 2, 2025
a7ecaf3
add `entries-by-versions` data
zloirock Aug 2, 2025
a7c6fb9
add `@core-js/compat/get-entries-list-for-target-version` helper
zloirock Aug 2, 2025
9744746
add a template of a babel plugin and tests runner
zloirock Aug 3, 2025
b7b237d
replace /virtual/ entries with /prototype/
zloirock Aug 5, 2025
f4cb20f
drop building built-ins definitions from entries definitions
zloirock Aug 5, 2025
c6ab9a9
tweak entries / dependencies
zloirock Aug 9, 2025
c76b026
prototype built-in definitions
zloirock Aug 9, 2025
64ce301
drop `core-js/` prefix from entries in compat / builder packages API
zloirock Aug 10, 2025
f048a98
drop `@core-js/{ compat, builder }` strings-namespaces support in `mo…
zloirock Aug 11, 2025
64c6233
update hermes data
zloirock Aug 12, 2025
640e5df
prototype global plugin modes
zloirock Aug 22, 2025
925a9e3
work on plugin
zloirock Aug 23, 2025
af146b8
add some fixtures
zloirock Aug 23, 2025
59f426f
test babel plugin on ci
zloirock Aug 23, 2025
5b8eb49
add some fixtures
zloirock Aug 24, 2025
13557cc
basic type optimization for `usage-global`
zloirock Aug 24, 2025
c1433b8
better optimization by hint in `usage-global`
zloirock Aug 25, 2025
b87a6c0
add `min-args` plugin filter
zloirock Aug 26, 2025
e6f2ad6
add `arg-is-string` plugin filter
zloirock Aug 26, 2025
0c5ed45
drop IE8- `unshift` fix
zloirock Aug 26, 2025
c0cf603
drop one more ancient IE workaround
zloirock Aug 26, 2025
42af2ba
drop IE8- `sort` fix
zloirock Aug 26, 2025
6ca4c97
drop IE8 `stringify` fix
zloirock Aug 26, 2025
1e0b768
drop Safari 6 `%TypedArray%.prototype.toLocaleString` fix
zloirock Aug 26, 2025
56b9787
add `min-args` filter to `JSON.parse`
zloirock Aug 26, 2025
36f4d47
add `min-args` filter to `Number#toExponential`
zloirock Aug 26, 2025
45c022b
add `arg-is-object ` plugin filter
zloirock Aug 26, 2025
59c1674
inject polyfills in visitor in `usage-global`
zloirock Aug 28, 2025
acf9ead
split `esnext.observable` -> `esnext.observable.{ constructor, from, …
zloirock Oct 4, 2023
3eb0be9
drop old TC39 `Observable` proposal in favor of future adding new Web…
zloirock Oct 13, 2023
1890427
drop legacy iterator helpers modules
zloirock Oct 8, 2024
0669a7b
update after rebasing
zloirock Dec 28, 2024
0415e5e
add a template of a babel plugin and tests runner
zloirock Aug 3, 2025
17e9a0b
Await dictionary of Promises proposal
slowcheetah Sep 15, 2025
21ec897
Update after rebase
slowcheetah Sep 15, 2025
eaec9be
Await dictionary of Promises proposal
slowcheetah Sep 15, 2025
ebd8ce1
Update Promise.allKeyed tests
slowcheetah Sep 18, 2025
c406109
Merge pull request #1463 from zloirock/all-keyed-tests
zloirock Sep 18, 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 @@ -8,37 +8,39 @@ node_modules/
.DS_Store
.idea

/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 [README.md](./README.md) 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` - 14)
`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

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
Loading