From c68c6d723959ce9c89b64420f04abc0b551d8008 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Thu, 19 Oct 2023 00:36:52 +0700 Subject: [PATCH] prevent potential issue with lack of some dependencies after automatic optimization polyfills of some methods in the pure version --- CHANGELOG.md | 1 + .../override/internals/get-built-in-prototype-method.js | 8 ++++++++ packages/core-js/internals/array-from-async.js | 4 ++-- .../core-js/internals/get-built-in-prototype-method.js | 6 ++++++ packages/core-js/modules/es.array.to-sorted.js | 4 ++-- 5 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 packages/core-js-pure/override/internals/get-built-in-prototype-method.js create mode 100644 packages/core-js/internals/get-built-in-prototype-method.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 3431452e73d4..6199a33f63af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ##### Unreleased - Added one more workaround of possible error with `Symbol` polyfill on global object, [#1289](https://github.com/zloirock/core-js/issues/1289#issuecomment-1768411444) - Directly specified `type: commonjs` in `package.json` of all packages to avoid potential breakage in future Node versions, see [this issue](https://github.com/nodejs/TSC/issues/1445) +- Prevented potential issue with lack of some dependencies after automatic optimization polyfills of some methods in the pure version - Some minor internal fixes and optimizations - Compat data improvements: - [`String.prototype.{ isWellFormed, toWellFormed }`](https://github.com/tc39/proposal-is-usv-string) marked as [supported from FF119](https://bugzilla.mozilla.org/show_bug.cgi?id=1850755) diff --git a/packages/core-js-pure/override/internals/get-built-in-prototype-method.js b/packages/core-js-pure/override/internals/get-built-in-prototype-method.js new file mode 100644 index 000000000000..5325ebc61186 --- /dev/null +++ b/packages/core-js-pure/override/internals/get-built-in-prototype-method.js @@ -0,0 +1,8 @@ +'use strict'; +var global = require('../internals/global'); +var path = require('../internals/path'); + +module.exports = function (CONSTRUCTOR, METHOD) { + var $namespace = path[CONSTRUCTOR + 'Prototype']; + return $namespace && $namespace[METHOD] || global[CONSTRUCTOR].prototype[METHOD]; +}; diff --git a/packages/core-js/internals/array-from-async.js b/packages/core-js/internals/array-from-async.js index 683f7b6166b5..6cca99943d32 100644 --- a/packages/core-js/internals/array-from-async.js +++ b/packages/core-js/internals/array-from-async.js @@ -8,14 +8,14 @@ var getIterator = require('../internals/get-iterator'); var getIteratorDirect = require('../internals/get-iterator-direct'); var getIteratorMethod = require('../internals/get-iterator-method'); var getMethod = require('../internals/get-method'); -var getVirtual = require('../internals/entry-virtual'); var getBuiltIn = require('../internals/get-built-in'); +var getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method'); var wellKnownSymbol = require('../internals/well-known-symbol'); var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator'); var toArray = require('../internals/async-iterator-iteration').toArray; var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator'); -var arrayIterator = uncurryThis(getVirtual('Array').values); +var arrayIterator = uncurryThis(getBuiltInPrototypeMethod('Array', 'values')); var arrayIteratorNext = uncurryThis(arrayIterator([]).next); var safeArrayIterator = function () { diff --git a/packages/core-js/internals/get-built-in-prototype-method.js b/packages/core-js/internals/get-built-in-prototype-method.js new file mode 100644 index 000000000000..c3591aec8106 --- /dev/null +++ b/packages/core-js/internals/get-built-in-prototype-method.js @@ -0,0 +1,6 @@ +'use strict'; +var global = require('../internals/global'); + +module.exports = function (CONSTRUCTOR, METHOD) { + return global[CONSTRUCTOR].prototype[METHOD]; +}; diff --git a/packages/core-js/modules/es.array.to-sorted.js b/packages/core-js/modules/es.array.to-sorted.js index 9e39f6ba9546..b3ce4786754c 100644 --- a/packages/core-js/modules/es.array.to-sorted.js +++ b/packages/core-js/modules/es.array.to-sorted.js @@ -4,11 +4,11 @@ var uncurryThis = require('../internals/function-uncurry-this'); var aCallable = require('../internals/a-callable'); var toIndexedObject = require('../internals/to-indexed-object'); var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list'); -var getVirtual = require('../internals/entry-virtual'); +var getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method'); var addToUnscopables = require('../internals/add-to-unscopables'); var $Array = Array; -var sort = uncurryThis(getVirtual('Array').sort); +var sort = uncurryThis(getBuiltInPrototypeMethod('Array', 'sort')); // `Array.prototype.toSorted` method // https://tc39.es/ecma262/#sec-array.prototype.tosorted