Update dependency core-js to v3
This MR contains the following updates:
Package | Type | Update | Change | References |
---|---|---|---|---|
core-js | dependencies | major |
^2.5.6 -> ^3.0.0
|
source |
Release Notes
zloirock/core-js
v3.1.4
- Refactoring. Many minor internal improvements and fixes like:
- Improved
Symbol.keyFor
complexity toO(1)
- Fixed the order of arguments validation in
String.prototype.{ endsWith, includes, startsWith }
- Internal implementation of
RegExp#flags
helper now respectdotAll
flag (mainly ralated to thepure
version) - Performace optimizations related old V8
- Etc.
- Improved
v3.1.3
- Fixed
core-js/features/reflect/delete-metadata
entry point - Some fixes and improvements of the
postinstall
script like supportnpm
color config (#556) or adding support ofADBLOCK
env variable - Refactoring and some minor fixes
v3.1.2
- Added a workaround of a strange
npx
bug onpostinstall
, #551
v3.1.1
- Added one more workaround of alternative not completely correct
Symbol
polyfills, #550, #554 - Reverted
esnext.string.match-all
in some entry points for fix autogeneration ofcore-js-compat/entries
and backward@babel/preset-env
compatibility
v3.1.0
-
String#matchAll
moved to stable ES, exposedSymbol.matchAll
, #516 -
Promise.allSettled
moved to stage 3, #515 -
String#replaceAll
moved to stage 2, behavior updated by the spec draft, #524 -
Promise.any
moved to stage 1, #517 - Removed
es.regexp.flags
dependency fromes.regexp.to-string
, #536, #537 - Fixed IE8- non-enumerable properties support in
Object.{ assign, entries, values }
, #541 - Fixed support of primitives in
Object.getOwnPropertySymbols
in Chrome 38 / 39, #539 -
window.postMessage
-based task implementation uses location origin over'*'
, #542 - Lookup
PromiseConstructor.resolve
only once inPromise
combinators, tc39/ecma262#1506 - Temporarily removed
core-js
dependency fromcore-js-compat
since it's required for missed at this moment feature - Show a message on
postinstall
- Added compat data for Chrome 76, FF 67, Node 12
v3.0.1
- Fixed some cases of work with malformed URI sequences in
URLSearchParams
, #525 - Added a workaround for a rollup issue, #513
v3.0.0
- Features
- Add new features:
-
Object.fromEntries
(ECMAScript 2019) -
Symbol#description
(ECMAScript 2019) - New
Set
methods (stage 2 proposal)Set#difference
Set#intersection
Set#isDisjointFrom
Set#isSubsetOf
Set#isSupersetOf
Set#symmetricDifference
Set#union
-
Promise.allSettled
(stage 2 proposal) - Getting last item from
Array
(stage 1 proposal)Array#lastItem
Array#lastIndex
-
String#replaceAll
(stage 1 proposal) -
String#codePoints
(stage 1 proposal) - New collections methods (stage 1 proposal)
Map.groupBy
Map.keyBy
Map#deleteAll
Map#every
Map#filter
Map#find
Map#findKey
Map#includes
Map#keyOf
Map#mapKeys
Map#mapValues
Map#merge
Map#reduce
Map#some
Map#update
Set#addAll
Set#deleteAll
Set#every
Set#filter
Set#find
Set#join
Set#map
Set#reduce
Set#some
WeakMap#deleteAll
WeakSet#addAll
WeakSet#deleteAll
-
compositeKey
andcompositeSymbol
methods (stage 1 proposal) -
Number.fromString
(stage 1 proposal) -
Math.seededMRNG
(stage 1 proposal) -
Symbol.patternMatch
(for stage 1 pattern matching proposal) -
Symbol.dispose
(for stage 1using
statement proposal) -
Promise.any
(withAggregateError
) (stage 0 proposal) -
URL
andURLSearchParam
fromURL
standard, also stage 0 proposal to ECMAScript-
URL
URL#href
URL#origin
URL#protocol
URL#username
URL#password
URL#host
URL#hostname
URL#port
URL#pathname
URL#search
URL#searchParams
URL#hash
URL#toString
URL#toJSON
-
URLSearchParams
URLSearchParams#append
URLSearchParams#delete
URLSearchParams#get
URLSearchParams#getAll
URLSearchParams#has
URLSearchParams#set
URLSearchParams#sort
URLSearchParams#toString
URLSearchParams#keys
URLSearchParams#values
URLSearchParams#entries
URLSearchParams#@​@​iterator
-
-
.forEach
method on iterable DOM collections (#329)
-
- Improve existing features:
- Add triggering unhandled
Promise
rejection events (instead of only global handlers), #205. - Wrap
fetch
for correct with polyfilledPromise
and preventing problems like #178, #332, #371. - Add support of
@@​isConcatSpreadable
toArray#concat
. - Add support of
@@​species
toArray#{concat, filter, map, slice, splice}
. - Add direct
.exec
calling toRegExp#{@​@​replace, @​@​split, @​@​match, @​@​search}
. Also, added fixes forRegExp#exec
method. #411, #434, #453, thanks @nicolo-ribaudo. - Correct iterators prototypes chain, related #261.
- Correct Typed Arrays prototypes chain, related #378.
- Make the internal state of polyfilled features completely unobservable, #146.
- Add validation of receiver's internal class to missed non-generic methods.
- Fix descriptors of global properties.
- In the version without global pollution, if
Object#toString
does not support@@​toStringTag
, add to wrapped prototypes owntoString
method with@@​toStringTag
logic, see #199.
- Add triggering unhandled
- Update standard features and proposals:
-
asap
(old stage 0 proposal) replaced byqueueMicrotask
(a part of HTML spec) - Update
Observable
(#257, #276, etc.) - Update
Array#flatten
->Array#flat
andArray#flatMap
- Update
global
stage 3 proposal - renameglobal
toglobalThis
- Update
String#matchAll
(proposal-string-matchall#17, proposal-string-matchall#38, proposal-string-matchall#41, etc.) and move to the stage 3 - Update
.name
properties ofString#{trimStart, trimEnd , trimLeft, trimRight}
, move to the stage 3 - Remove mongolian vowel separator (U+180E) from the list of whitespaces for methods like
String#trim
(ES6 -> ES7)
-
- Mark ES2016, ES2017, ES2018, ES2019 features as stable:
Array#{ flat, flatMap }
{ Array, %TypedArray% }#includes
Object.{ values, entries}
Object.getOwnPropertyDescriptors
String#{ padStart, padEnd }
String#{ trimStart, trimEnd, trimLeft, trimRight }
Promise#finally
Symbol.asyncIterator
Object#__(define|lookup)[GS]etter__
- Remove obsolete features:
-
Error.isError
(withdrawn) -
System.global
andglobal
(replaced byglobalThis
) -
Map#toJSON
andSet#toJSON
(rejected) -
RegExp.escape
(rejected) -
Reflect.enumerate
(removed from the spec) - Unnecessary iteration methods from
CSSRuleList
,MediaList
,StyleSheetList
-
-
No more non-standard features, finally removed:
Dict
Object.{classof, isObject, define, make}
Function#part
Number#@​@​iterator
String#{escapeHTML, unescapeHTML}
delay
- Add
.sham
flag to features which can't be properly polyfilled and / or not recommended for usage:-
Symbol
constructor - we can't add new primitives.Object.prototype
accessors too expensive. -
Object.{create, defineProperty, defineProperties, getOwnPropertyDescriptor, getOwnPropertyDescriptos}
,Reflect.{defineProperty, getOwnPropertyDescriptor}
can't be properly polyfilled without descriptors support. -
Object.{freeze, seal, preventExtensions}
,Reflect.preventExtensions
can't be properly polyfilled in ES3 environment. -
Object.getPrototypeOf
can be deceived in ES3 environment. -
Reflect.construct
can't be polyfilled for a correct work withnewTarget
argument on built-ins. - Typed Array constructors polyfill is quite correct but too expensive.
-
URL
constructor in engines without descriptors support.
-
- Add new features:
- Bug and compatibility fixes:
- Fix deoptimisation of iterators in V8, #377.
- Fix import of property before constructor which should contain this property, #262.
- Fix some cases of IE11
WeakMap
frozen keys fallback, #384. - Fix non-enumerable integer keys issue because of Nashorn ~ JDK8 bug, #389.
- Fix Safari 12.0
Array#reverse
bug. - One more fix for microtasks in iOS related #339.
- Added a fallback for Rhino bug, #440.
- Many other internal fixes and improvements.
- Repository:
- Change
core-js
repository structure to monorepo with packages in/packages/
directory. - Clean-up it, remove all possible duplicates, generated files, etc.
- Change
- Packages:
- Extract a version without global namespace pollution to a separate
core-js-pure
package (replacement forcore-js/library
). - Leave only one pair of bundles (global, with all polyfills) and move it to
core-js-bundle
package. - Remove bundling logic from
core-js
package, leave it only incore-js-builder
package. - Clean-up packages.
- Because of all approaches, reduce size of packages from ~2mb for
core-js@2
to:- ~500kb for
core-js
package - ~440kb for
core-js-pure
package
- ~500kb for
- Finally remove
bower.json
- Extract a version without global namespace pollution to a separate
- CommonJS API, namespaces:
- Add availability configuration of aggressiveness.
- Move
core-js/library
to separatecore-js-pure
package. - Because of removing all non-standard features, we no longer need
core-js/shim
entry point, replace it just withcore-js
. - Move all features from ES5, ES2015, ES2016, ES2017, ES2018 and ES2019 to one namespace for stable ES - it's available as
core-js/es
, all those features inmodules
folder hases.
prefix. - Change prefix for ES proposals from
es7.
toesnext.
, they no longer available incore-js/es7
, usecore-js/stage/*
instead of that. - Rename
core-js(/library)/fn
tocore-js(-pure)/features
for improve readability. - Allow more granular inclusion of features from
/es/
path (for example,core-js/es/array/from
). - Add
/stable/
entry points as an equal of/features/
for stable features, without proposals. - Add
/proposals/
entry points for allow include all features from one proposal (for example,core-js/proposals/reflect-metadata
). - Add
/es|stable|features/instance/
entry points for getting polyfill of the related method for passed instance (could be used in cases likebabel-runtime
). - Split typed arrays polyfills. Now you can, for example, load only required method (for example,
core-js/es/typed-array/from
). - Extract well-known symbols definition from
es.symbol
module for loading only required features, for example, in MS Edge. - Rename
web.dom
namespace toweb.dom-collections
. - Rename
es6.regexp.{match, replace, search, split}
->es.string.{match, replace, search, split}
- mainly it's fixes / adding support of well-known symbols to string methods, only in second place adding related methods to regexp prototype. - Relax
/modules/
directory by moving internal modules to/internals/
directory. - Remove deprecated array entry points:
core-js(/library)/fn/array/{pop, push, reverse, shift, unshift}
. -
core
object no longer available in the global version, entry points which previously returned it now returnsglobalThis
object. Also, don't set globalcore
property. - Add some missing entry points.
- Tools, tests, code quality:
- Added
core-js-compat
package with:- Data about the necessity of
core-js
modules and API for getting a list of requiredcore-js
modules bybrowserslist
query, #466. - Data which modules load by each entry point (mainly useful for tools like
@babel/preset-env
). - Data which modules added in minor versions (mainly useful for tools like
@babel/preset-env
).
- Data about the necessity of
-
core-js-builder
package:- Added
targets
option withbrowserslist
query. - Removed an option for generation bundle of a version without global namespace pollution - now it's an odd use case.
- Removed UMD wrapper from a generated code of bundles - we don't need it for a global polyfill.
- Added
-
Getting rid of LiveScript, usage another language in JS standard library looks strange and impedes usage of tools like ESLint:
- Tests are rewritten to JS.
- Scripts are rewritten to JS.
- Babel with minimalistic config (which should work anywhere) used on tests.
- ESLint used on tests and tools.
- Source code refactored for improving readability.
- Added
Renovate configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.