From ce17c764c5a2f911a686a2715f375391ed08a697 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Thu, 27 Jul 2023 02:08:26 +0700 Subject: [PATCH] fix forced polyfilling of some iterator helpers that should return wrapped iterator in the pure version --- CHANGELOG.md | 1 + packages/core-js/modules/esnext.async-iterator.drop.js | 3 ++- packages/core-js/modules/esnext.async-iterator.filter.js | 3 ++- packages/core-js/modules/esnext.async-iterator.flat-map.js | 3 ++- packages/core-js/modules/esnext.async-iterator.from.js | 3 ++- packages/core-js/modules/esnext.async-iterator.map.js | 3 ++- packages/core-js/modules/esnext.async-iterator.take.js | 3 ++- packages/core-js/modules/esnext.iterator.drop.js | 3 ++- packages/core-js/modules/esnext.iterator.filter.js | 3 ++- packages/core-js/modules/esnext.iterator.flat-map.js | 3 ++- packages/core-js/modules/esnext.iterator.from.js | 3 ++- packages/core-js/modules/esnext.iterator.map.js | 3 ++- packages/core-js/modules/esnext.iterator.take.js | 3 ++- packages/core-js/modules/esnext.iterator.to-async.js | 3 ++- packages/core-js/modules/esnext.map.group-by.js | 2 +- 15 files changed, 28 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc28e6bb1d04..196fef2ad82a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ - `DataView.prototype.getUint8Clamped` - `DataView.prototype.setUint8Clamped` - Used strict mode in some missed cases, [#1269](https://github.com/zloirock/core-js/issues/1269) +- Fixed forced polyfilling of some iterator helpers that should return wrapped iterator in the pure version - Fixed and exposed [`AsyncIteratorPrototype` `core-js/configurator` option](https://github.com/zloirock/core-js#asynciterator-helpers), [#1268](https://github.com/zloirock/core-js/issues/1268) - Compat data improvements: - Sync [`Iterator` helpers proposal](https://github.com/tc39/proposal-iterator-helpers) features marked as [supported](https://chromestatus.com/feature/5102502917177344) from V8 ~ Chrome 117 diff --git a/packages/core-js/modules/esnext.async-iterator.drop.js b/packages/core-js/modules/esnext.async-iterator.drop.js index aca586d135b4..f6535bad91e4 100644 --- a/packages/core-js/modules/esnext.async-iterator.drop.js +++ b/packages/core-js/modules/esnext.async-iterator.drop.js @@ -7,6 +7,7 @@ var notANaN = require('../internals/not-a-nan'); var toPositiveInteger = require('../internals/to-positive-integer'); var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); var createIterResultObject = require('../internals/create-iter-result-object'); +var IS_PURE = require('../internals/is-pure'); var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) { var state = this; @@ -39,7 +40,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) { // `AsyncIterator.prototype.drop` method // https://github.com/tc39/proposal-async-iterator-helpers -$({ target: 'AsyncIterator', proto: true, real: true }, { +$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, { drop: function drop(limit) { anObject(this); var remaining = toPositiveInteger(notANaN(+limit)); diff --git a/packages/core-js/modules/esnext.async-iterator.filter.js b/packages/core-js/modules/esnext.async-iterator.filter.js index bb4d4ab6218c..1455504714e6 100644 --- a/packages/core-js/modules/esnext.async-iterator.filter.js +++ b/packages/core-js/modules/esnext.async-iterator.filter.js @@ -8,6 +8,7 @@ var getIteratorDirect = require('../internals/get-iterator-direct'); var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); var createIterResultObject = require('../internals/create-iter-result-object'); var closeAsyncIteration = require('../internals/async-iterator-close'); +var IS_PURE = require('../internals/is-pure'); var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) { var state = this; @@ -55,7 +56,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) { // `AsyncIterator.prototype.filter` method // https://github.com/tc39/proposal-async-iterator-helpers -$({ target: 'AsyncIterator', proto: true, real: true }, { +$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, { filter: function filter(predicate) { anObject(this); aCallable(predicate); diff --git a/packages/core-js/modules/esnext.async-iterator.flat-map.js b/packages/core-js/modules/esnext.async-iterator.flat-map.js index e92c6adc8124..50195b6d6273 100644 --- a/packages/core-js/modules/esnext.async-iterator.flat-map.js +++ b/packages/core-js/modules/esnext.async-iterator.flat-map.js @@ -9,6 +9,7 @@ var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy var createIterResultObject = require('../internals/create-iter-result-object'); var getAsyncIteratorFlattenable = require('../internals/get-async-iterator-flattenable'); var closeAsyncIteration = require('../internals/async-iterator-close'); +var IS_PURE = require('../internals/is-pure'); var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) { var state = this; @@ -75,7 +76,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) { // `AsyncIterator.prototype.flaMap` method // https://github.com/tc39/proposal-async-iterator-helpers -$({ target: 'AsyncIterator', proto: true, real: true }, { +$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, { flatMap: function flatMap(mapper) { anObject(this); aCallable(mapper); diff --git a/packages/core-js/modules/esnext.async-iterator.from.js b/packages/core-js/modules/esnext.async-iterator.from.js index 6d2eeca7f2e9..8eed9803c1aa 100644 --- a/packages/core-js/modules/esnext.async-iterator.from.js +++ b/packages/core-js/modules/esnext.async-iterator.from.js @@ -5,10 +5,11 @@ var isPrototypeOf = require('../internals/object-is-prototype-of'); var getAsyncIteratorFlattenable = require('../internals/get-async-iterator-flattenable'); var AsyncIteratorPrototype = require('../internals/async-iterator-prototype'); var WrapAsyncIterator = require('../internals/async-iterator-wrap'); +var IS_PURE = require('../internals/is-pure'); // `AsyncIterator.from` method // https://github.com/tc39/proposal-async-iterator-helpers -$({ target: 'AsyncIterator', stat: true }, { +$({ target: 'AsyncIterator', stat: true, forced: IS_PURE }, { from: function from(O) { var iteratorRecord = getAsyncIteratorFlattenable(typeof O == 'string' ? toObject(O) : O); return isPrototypeOf(AsyncIteratorPrototype, iteratorRecord.iterator) diff --git a/packages/core-js/modules/esnext.async-iterator.map.js b/packages/core-js/modules/esnext.async-iterator.map.js index 06b006e15022..da1a33026f8e 100644 --- a/packages/core-js/modules/esnext.async-iterator.map.js +++ b/packages/core-js/modules/esnext.async-iterator.map.js @@ -1,10 +1,11 @@ 'use strict'; var $ = require('../internals/export'); var map = require('../internals/async-iterator-map'); +var IS_PURE = require('../internals/is-pure'); // `AsyncIterator.prototype.map` method // https://github.com/tc39/proposal-async-iterator-helpers -$({ target: 'AsyncIterator', proto: true, real: true }, { +$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, { map: map }); diff --git a/packages/core-js/modules/esnext.async-iterator.take.js b/packages/core-js/modules/esnext.async-iterator.take.js index 34e40515fa71..977febad98ab 100644 --- a/packages/core-js/modules/esnext.async-iterator.take.js +++ b/packages/core-js/modules/esnext.async-iterator.take.js @@ -7,6 +7,7 @@ var notANaN = require('../internals/not-a-nan'); var toPositiveInteger = require('../internals/to-positive-integer'); var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); var createIterResultObject = require('../internals/create-iter-result-object'); +var IS_PURE = require('../internals/is-pure'); var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) { var state = this; @@ -36,7 +37,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) { // `AsyncIterator.prototype.take` method // https://github.com/tc39/proposal-async-iterator-helpers -$({ target: 'AsyncIterator', proto: true, real: true }, { +$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, { take: function take(limit) { anObject(this); var remaining = toPositiveInteger(notANaN(+limit)); diff --git a/packages/core-js/modules/esnext.iterator.drop.js b/packages/core-js/modules/esnext.iterator.drop.js index 5500812e04aa..3e7a093bb16a 100644 --- a/packages/core-js/modules/esnext.iterator.drop.js +++ b/packages/core-js/modules/esnext.iterator.drop.js @@ -6,6 +6,7 @@ var getIteratorDirect = require('../internals/get-iterator-direct'); var notANaN = require('../internals/not-a-nan'); var toPositiveInteger = require('../internals/to-positive-integer'); var createIteratorProxy = require('../internals/iterator-create-proxy'); +var IS_PURE = require('../internals/is-pure'); var IteratorProxy = createIteratorProxy(function () { var iterator = this.iterator; @@ -24,7 +25,7 @@ var IteratorProxy = createIteratorProxy(function () { // `Iterator.prototype.drop` method // https://github.com/tc39/proposal-iterator-helpers -$({ target: 'Iterator', proto: true, real: true }, { +$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, { drop: function drop(limit) { anObject(this); var remaining = toPositiveInteger(notANaN(+limit)); diff --git a/packages/core-js/modules/esnext.iterator.filter.js b/packages/core-js/modules/esnext.iterator.filter.js index 6001c246acd9..981d68d84f4d 100644 --- a/packages/core-js/modules/esnext.iterator.filter.js +++ b/packages/core-js/modules/esnext.iterator.filter.js @@ -6,6 +6,7 @@ var anObject = require('../internals/an-object'); var getIteratorDirect = require('../internals/get-iterator-direct'); var createIteratorProxy = require('../internals/iterator-create-proxy'); var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing'); +var IS_PURE = require('../internals/is-pure'); var IteratorProxy = createIteratorProxy(function () { var iterator = this.iterator; @@ -23,7 +24,7 @@ var IteratorProxy = createIteratorProxy(function () { // `Iterator.prototype.filter` method // https://github.com/tc39/proposal-iterator-helpers -$({ target: 'Iterator', proto: true, real: true }, { +$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, { filter: function filter(predicate) { anObject(this); aCallable(predicate); diff --git a/packages/core-js/modules/esnext.iterator.flat-map.js b/packages/core-js/modules/esnext.iterator.flat-map.js index beda42be4c72..3e616ecfce4e 100644 --- a/packages/core-js/modules/esnext.iterator.flat-map.js +++ b/packages/core-js/modules/esnext.iterator.flat-map.js @@ -7,6 +7,7 @@ var getIteratorDirect = require('../internals/get-iterator-direct'); var getIteratorFlattenable = require('../internals/get-iterator-flattenable'); var createIteratorProxy = require('../internals/iterator-create-proxy'); var iteratorClose = require('../internals/iterator-close'); +var IS_PURE = require('../internals/is-pure'); var IteratorProxy = createIteratorProxy(function () { var iterator = this.iterator; @@ -32,7 +33,7 @@ var IteratorProxy = createIteratorProxy(function () { // `Iterator.prototype.flatMap` method // https://github.com/tc39/proposal-iterator-helpers -$({ target: 'Iterator', proto: true, real: true }, { +$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, { flatMap: function flatMap(mapper) { anObject(this); aCallable(mapper); diff --git a/packages/core-js/modules/esnext.iterator.from.js b/packages/core-js/modules/esnext.iterator.from.js index 6c198eeb318c..323db55d52cb 100644 --- a/packages/core-js/modules/esnext.iterator.from.js +++ b/packages/core-js/modules/esnext.iterator.from.js @@ -6,6 +6,7 @@ var isPrototypeOf = require('../internals/object-is-prototype-of'); var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype; var createIteratorProxy = require('../internals/iterator-create-proxy'); var getIteratorFlattenable = require('../internals/get-iterator-flattenable'); +var IS_PURE = require('../internals/is-pure'); var IteratorProxy = createIteratorProxy(function () { return call(this.next, this.iterator); @@ -13,7 +14,7 @@ var IteratorProxy = createIteratorProxy(function () { // `Iterator.from` method // https://github.com/tc39/proposal-iterator-helpers -$({ target: 'Iterator', stat: true }, { +$({ target: 'Iterator', stat: true, forced: IS_PURE }, { from: function from(O) { var iteratorRecord = getIteratorFlattenable(typeof O == 'string' ? toObject(O) : O, true); return isPrototypeOf(IteratorPrototype, iteratorRecord.iterator) diff --git a/packages/core-js/modules/esnext.iterator.map.js b/packages/core-js/modules/esnext.iterator.map.js index c930772515e8..1204e678318c 100644 --- a/packages/core-js/modules/esnext.iterator.map.js +++ b/packages/core-js/modules/esnext.iterator.map.js @@ -1,9 +1,10 @@ 'use strict'; var $ = require('../internals/export'); var map = require('../internals/iterator-map'); +var IS_PURE = require('../internals/is-pure'); // `Iterator.prototype.map` method // https://github.com/tc39/proposal-iterator-helpers -$({ target: 'Iterator', proto: true, real: true }, { +$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, { map: map }); diff --git a/packages/core-js/modules/esnext.iterator.take.js b/packages/core-js/modules/esnext.iterator.take.js index 35f39cf811db..b2c9302ecebb 100644 --- a/packages/core-js/modules/esnext.iterator.take.js +++ b/packages/core-js/modules/esnext.iterator.take.js @@ -7,6 +7,7 @@ var notANaN = require('../internals/not-a-nan'); var toPositiveInteger = require('../internals/to-positive-integer'); var createIteratorProxy = require('../internals/iterator-create-proxy'); var iteratorClose = require('../internals/iterator-close'); +var IS_PURE = require('../internals/is-pure'); var IteratorProxy = createIteratorProxy(function () { var iterator = this.iterator; @@ -21,7 +22,7 @@ var IteratorProxy = createIteratorProxy(function () { // `Iterator.prototype.take` method // https://github.com/tc39/proposal-iterator-helpers -$({ target: 'Iterator', proto: true, real: true }, { +$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, { take: function take(limit) { anObject(this); var remaining = toPositiveInteger(notANaN(+limit)); diff --git a/packages/core-js/modules/esnext.iterator.to-async.js b/packages/core-js/modules/esnext.iterator.to-async.js index 8f09e00442e6..fa7ee2efef86 100644 --- a/packages/core-js/modules/esnext.iterator.to-async.js +++ b/packages/core-js/modules/esnext.iterator.to-async.js @@ -4,10 +4,11 @@ var anObject = require('../internals/an-object'); var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator'); var WrapAsyncIterator = require('../internals/async-iterator-wrap'); var getIteratorDirect = require('../internals/get-iterator-direct'); +var IS_PURE = require('../internals/is-pure'); // `Iterator.prototype.toAsync` method // https://github.com/tc39/proposal-async-iterator-helpers -$({ target: 'Iterator', proto: true, real: true }, { +$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, { toAsync: function toAsync() { return new WrapAsyncIterator(getIteratorDirect(new AsyncFromSyncIterator(getIteratorDirect(anObject(this))))); } diff --git a/packages/core-js/modules/esnext.map.group-by.js b/packages/core-js/modules/esnext.map.group-by.js index bc383b18b105..badc33250ac9 100644 --- a/packages/core-js/modules/esnext.map.group-by.js +++ b/packages/core-js/modules/esnext.map.group-by.js @@ -1,11 +1,11 @@ 'use strict'; var $ = require('../internals/export'); -var IS_PURE = require('../internals/is-pure'); var uncurryThis = require('../internals/function-uncurry-this'); var aCallable = require('../internals/a-callable'); var requireObjectCoercible = require('../internals/require-object-coercible'); var iterate = require('../internals/iterate'); var MapHelpers = require('../internals/map-helpers'); +var IS_PURE = require('../internals/is-pure'); var Map = MapHelpers.Map; var has = MapHelpers.has;