mirror of
https://github.com/hanzoai/core-js.git
synced 2026-09-24 16:58:15 +00:00
move Iterator chunking to stage 3
https://github.com/tc39/proposals/commit/7226f0af93443025010efcad219115cec7dc8b2a
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
### Unreleased
|
||||
- [`Iterator` chunking proposal](https://github.com/tc39/proposal-iterator-chunking):
|
||||
- Built-ins:
|
||||
- `Iterator.prototype.chunks`
|
||||
- `Iterator.prototype.windows`
|
||||
- Moved to stage 3, [May 2026 TC39 meeting](https://github.com/tc39/proposals/commit/7226f0af93443025010efcad219115cec7dc8b2a)
|
||||
- Added `/actual/` namespaces entries
|
||||
- Ensure opaque paths always roundtrip in URL polyfill (still without adding to feature detection), [whatwg/url#844](https://github.com/whatwg/url/pull/844)
|
||||
- Fixed possible crash on some keys in `Symbol.for`
|
||||
- Some `get-iterator` / `get-iterator-method` fixes
|
||||
|
||||
@@ -172,9 +172,10 @@ structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
|
||||
- [`Math.sumPrecise`](#mathsumprecise)
|
||||
- [Stage 3 proposals](#stage-3-proposals)
|
||||
- [Joint iteration](#joint-iteration)
|
||||
- [`Iterator` chunking](#iterator-chunking)
|
||||
- [`Symbol.metadata` for decorators metadata proposal](#symbolmetadata-for-decorators-metadata-proposal)
|
||||
- [Stage 2.7 proposals](#stage-27-proposals)
|
||||
- [`Iterator` chunking](#iterator-chunking)
|
||||
- **empty**
|
||||
- [Stage 2 proposals](#stage-2-proposals)
|
||||
- [`AsyncIterator` helpers](#asynciterator-helpers)
|
||||
- [`Iterator.range`](#iteratorrange)
|
||||
@@ -2835,6 +2836,34 @@ Iterator.zipKeyed({
|
||||
*/
|
||||
```
|
||||
|
||||
##### [`Iterator` chunking](https://github.com/tc39/proposal-iterator-chunking)[⬆](#index)
|
||||
Modules [`esnext.iterator.chunks`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.iterator.chunks.js)
|
||||
and [`esnext.iterator.windows`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.iterator.windows.js)
|
||||
```ts
|
||||
class Iterator {
|
||||
chunks(chunkSize: number): Iterator<any>;
|
||||
windows(windowSize: number, undersized?: 'only-full' | 'allow-partial' | undefined): Iterator<any>;
|
||||
}
|
||||
```
|
||||
[*CommonJS entry points:*](#commonjs-api)
|
||||
```
|
||||
core-js/proposals/iterator-chunking-v2
|
||||
core-js(-pure)/actual|full/iterator/chunks
|
||||
core-js(-pure)/actual|full/iterator/windows
|
||||
```
|
||||
[*Examples*](https://tinyurl.com/24xnkcnn)
|
||||
```js
|
||||
const digits = () => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].values();
|
||||
|
||||
let chunks = Array.from(digits().chunks(2)); // [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]
|
||||
|
||||
let windows = Array.from(digits().windows(2)); // [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9]]
|
||||
|
||||
let windowsPartial = Array.from([0, 1].values().windows(3, 'allow-partial')); // [[0, 1]]
|
||||
|
||||
let windowsFull = Array.from([0, 1].values().windows(3)); // []
|
||||
```
|
||||
|
||||
##### [`Symbol.metadata` for decorators metadata proposal](https://github.com/tc39/proposal-decorator-metadata)[⬆](#index)
|
||||
Modules [`esnext.symbol.metadata`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.symbol.metadata.js) and [`esnext.function.metadata`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.function.metadata.js).
|
||||
```ts
|
||||
@@ -2859,33 +2888,7 @@ core-js(-pure)/actual|full/function/metadata
|
||||
core-js(-pure)/stage/2.7
|
||||
```
|
||||
|
||||
##### [`Iterator` chunking](https://github.com/tc39/proposal-iterator-chunking)[⬆](#index)
|
||||
Modules [`esnext.iterator.chunks`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.iterator.chunks.js)
|
||||
and [`esnext.iterator.windows`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.iterator.windows.js)
|
||||
```ts
|
||||
class Iterator {
|
||||
chunks(chunkSize: number): Iterator<any>;
|
||||
windows(windowSize: number, undersized?: 'only-full' | 'allow-partial' | undefined): Iterator<any>;
|
||||
}
|
||||
```
|
||||
[*CommonJS entry points:*](#commonjs-api)
|
||||
```
|
||||
core-js/proposals/iterator-chunking-v2
|
||||
core-js(-pure)/full/iterator/chunks
|
||||
core-js(-pure)/full/iterator/windows
|
||||
```
|
||||
[*Examples*](https://tinyurl.com/24xnkcnn)
|
||||
```js
|
||||
const digits = () => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].values();
|
||||
|
||||
let chunks = Array.from(digits().chunks(2)); // [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]
|
||||
|
||||
let windows = Array.from(digits().windows(2)); // [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9]]
|
||||
|
||||
let windowsPartial = Array.from([0, 1].values().windows(3, 'allow-partial')); // [[0, 1]]
|
||||
|
||||
let windowsFull = Array.from([0, 1].values().windows(3)); // []
|
||||
```
|
||||
**empty**
|
||||
|
||||
#### Stage 2 proposals[⬆](#index)
|
||||
[*CommonJS entry points:*](#commonjs-api)
|
||||
|
||||
@@ -16,8 +16,8 @@ class Iterator {
|
||||
## [Entry points]({docs-version}/docs/usage#h-entry-points)
|
||||
```plaintext
|
||||
core-js/proposals/iterator-chunking-v2
|
||||
core-js(-pure)/full/iterator/chunks
|
||||
core-js(-pure)/full/iterator/windows
|
||||
core-js(-pure)/actual|full/iterator/chunks
|
||||
core-js(-pure)/actual|full/iterator/windows
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
@@ -254,6 +254,10 @@
|
||||
"title": "Joint iteration",
|
||||
"url": "{docs-version}/docs/features/proposals/joint-iteration"
|
||||
},
|
||||
{
|
||||
"title": "Iterator chunking",
|
||||
"url": "{docs-version}/docs/features/proposals/iterator-chunking"
|
||||
},
|
||||
{
|
||||
"title": "Symbol.metadata for decorators metadata proposal",
|
||||
"url": "{docs-version}/docs/features/proposals/symbol-metadata"
|
||||
@@ -263,10 +267,7 @@
|
||||
{
|
||||
"title": "Stage 2.7 proposals",
|
||||
"children": [
|
||||
{
|
||||
"title": "Iterator chunking",
|
||||
"url": "{docs-version}/docs/features/proposals/iterator-chunking"
|
||||
}
|
||||
// empty
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
'use strict';
|
||||
require('../../modules/es.object.to-string');
|
||||
require('../../modules/es.iterator.constructor');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
|
||||
var entryUnbind = require('../../internals/entry-unbind');
|
||||
|
||||
module.exports = entryUnbind('Iterator', 'chunks');
|
||||
@@ -1,5 +1,7 @@
|
||||
'use strict';
|
||||
var parent = require('../../stable/iterator/concat');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.concat');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
|
||||
module.exports = parent;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
var parent = require('../../stable/iterator/from');
|
||||
require('../../modules/es.promise');
|
||||
require('../../modules/esnext.iterator.constructor');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.dispose');
|
||||
require('../../modules/esnext.iterator.drop');
|
||||
require('../../modules/esnext.iterator.every');
|
||||
@@ -16,5 +17,6 @@ require('../../modules/esnext.iterator.some');
|
||||
require('../../modules/esnext.iterator.take');
|
||||
require('../../modules/esnext.iterator.to-array');
|
||||
require('../../modules/esnext.iterator.to-async');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
|
||||
module.exports = parent;
|
||||
|
||||
@@ -3,6 +3,7 @@ var parent = require('../../stable/iterator');
|
||||
require('../../modules/es.object.create');
|
||||
require('../../modules/es.promise');
|
||||
require('../../modules/esnext.iterator.constructor');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.concat');
|
||||
require('../../modules/esnext.iterator.dispose');
|
||||
require('../../modules/esnext.iterator.drop');
|
||||
@@ -18,6 +19,7 @@ require('../../modules/esnext.iterator.some');
|
||||
require('../../modules/esnext.iterator.take');
|
||||
require('../../modules/esnext.iterator.to-array');
|
||||
require('../../modules/esnext.iterator.to-async');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
require('../../modules/esnext.iterator.zip');
|
||||
require('../../modules/esnext.iterator.zip-keyed');
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
'use strict';
|
||||
require('../../modules/es.object.to-string');
|
||||
require('../../modules/es.iterator.constructor');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
|
||||
var entryUnbind = require('../../internals/entry-unbind');
|
||||
|
||||
module.exports = entryUnbind('Iterator', 'windows');
|
||||
@@ -16,6 +16,8 @@ require('../../modules/es.iterator.some');
|
||||
require('../../modules/es.iterator.take');
|
||||
require('../../modules/es.iterator.to-array');
|
||||
require('../../modules/es.reflect.own-keys');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
require('../../modules/esnext.iterator.zip-keyed');
|
||||
require('../../modules/web.dom-collections.iterator');
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ require('../../modules/es.iterator.reduce');
|
||||
require('../../modules/es.iterator.some');
|
||||
require('../../modules/es.iterator.take');
|
||||
require('../../modules/es.iterator.to-array');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
require('../../modules/esnext.iterator.zip');
|
||||
require('../../modules/web.dom-collections.iterator');
|
||||
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
'use strict';
|
||||
require('../../modules/es.object.to-string');
|
||||
require('../../modules/es.iterator.constructor');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
var parent = require('../../actual/iterator/chunks');
|
||||
|
||||
var entryUnbind = require('../../internals/entry-unbind');
|
||||
|
||||
module.exports = entryUnbind('Iterator', 'chunks');
|
||||
module.exports = parent;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
'use strict';
|
||||
var parent = require('../../actual/iterator/concat');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.sliding');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
|
||||
module.exports = parent;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
'use strict';
|
||||
var parent = require('../../actual/iterator/from');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.sliding');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
|
||||
module.exports = parent;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
'use strict';
|
||||
var parent = require('../../actual/iterator');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.range');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
// TODO: Remove from `core-js@4`
|
||||
require('../../modules/esnext.iterator.as-indexed-pairs');
|
||||
require('../../modules/esnext.iterator.indexed');
|
||||
|
||||
@@ -14,9 +14,9 @@ require('../../modules/es.iterator.reduce');
|
||||
require('../../modules/es.iterator.some');
|
||||
require('../../modules/es.iterator.take');
|
||||
require('../../modules/es.iterator.to-array');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
// TODO: drop from core-js@4
|
||||
require('../../modules/esnext.iterator.constructor');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.range');
|
||||
require('../../modules/esnext.iterator.sliding');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
'use strict';
|
||||
require('../../modules/es.object.to-string');
|
||||
require('../../modules/es.iterator.constructor');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
var parent = require('../../actual/iterator/windows');
|
||||
|
||||
var entryUnbind = require('../../internals/entry-unbind');
|
||||
|
||||
module.exports = entryUnbind('Iterator', 'windows');
|
||||
module.exports = parent;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
'use strict';
|
||||
var parent = require('../../actual/iterator/zip-keyed');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.sliding');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
|
||||
module.exports = parent;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
'use strict';
|
||||
var parent = require('../../actual/iterator/zip');
|
||||
require('../../modules/esnext.iterator.chunks');
|
||||
require('../../modules/esnext.iterator.sliding');
|
||||
require('../../modules/esnext.iterator.windows');
|
||||
|
||||
module.exports = parent;
|
||||
|
||||
@@ -7,6 +7,7 @@ require('../proposals/joint-iteration');
|
||||
require('../proposals/array-grouping-stage-3');
|
||||
require('../proposals/array-grouping-stage-3-2');
|
||||
require('../proposals/change-array-by-copy');
|
||||
require('../proposals/iterator-chunking-v2');
|
||||
require('../proposals/iterator-helpers-stage-3');
|
||||
|
||||
module.exports = parent;
|
||||
|
||||
@@ -718,7 +718,9 @@ for (PATH of ['core-js-pure', 'core-js']) {
|
||||
ok(typeof load(NS, 'async-iterator/take') == 'function');
|
||||
ok(typeof load(NS, 'async-iterator/to-array') == 'function');
|
||||
ok(load(NS, 'function/metadata') === null);
|
||||
ok(typeof load(NS, 'iterator/chunks') == 'function');
|
||||
ok(typeof load(NS, 'iterator/to-async') == 'function');
|
||||
ok(typeof load(NS, 'iterator/windows') == 'function');
|
||||
ok(typeof load(NS, 'iterator/zip') == 'function');
|
||||
ok(typeof load(NS, 'iterator/zip-keyed') == 'function');
|
||||
ok(load(NS, 'symbol/metadata'));
|
||||
@@ -779,9 +781,7 @@ for (PATH of ['core-js-pure', 'core-js']) {
|
||||
ok(typeof load(NS, 'iterator/as-indexed-pairs') == 'function');
|
||||
ok(typeof load(NS, 'iterator/indexed') == 'function');
|
||||
ok(load(NS, 'iterator/range')(1, 2).next().value === 1);
|
||||
ok(typeof load(NS, 'iterator/chunks') == 'function');
|
||||
ok(typeof load(NS, 'iterator/sliding') == 'function');
|
||||
ok(typeof load(NS, 'iterator/windows') == 'function');
|
||||
ok(load(NS, 'map/delete-all')(new Map(), 1, 2) === false);
|
||||
ok(load(NS, 'map/emplace')(new Map([[1, 2]]), 1, { update: it => it ** 2 }) === 4);
|
||||
ok(load(NS, 'map/every')(new Map([[1, 2], [2, 3], [3, 4]]), it => it % 2) === false);
|
||||
|
||||
Reference in New Issue
Block a user