backport Iterator.prototype.join

This commit is contained in:
Denis Pushkarev
2026-06-27 12:09:27 +07:00
parent 6c756fa1de
commit 2ac5a49305
23 changed files with 203 additions and 1 deletions
+2
View File
@@ -2636,6 +2636,8 @@ export const data = {
},
'esnext.iterator.indexed': {
},
'esnext.iterator.join': {
},
// TODO: Remove from `core-js@4`
'esnext.iterator.map': null,
'esnext.iterator.range': {
@@ -327,5 +327,6 @@ export default {
'es.iterator.zip',
'es.iterator.zip-keyed',
'esnext.iterator.includes',
'esnext.iterator.join',
],
};
@@ -3,6 +3,7 @@ var parent = require('../../stable/iterator/concat');
require('../../modules/esnext.iterator.chunks');
require('../../modules/esnext.iterator.concat');
require('../../modules/esnext.iterator.includes');
require('../../modules/esnext.iterator.join');
require('../../modules/esnext.iterator.windows');
module.exports = parent;
+1
View File
@@ -12,6 +12,7 @@ require('../../modules/esnext.iterator.flat-map');
require('../../modules/esnext.iterator.for-each');
require('../../modules/esnext.iterator.from');
require('../../modules/esnext.iterator.includes');
require('../../modules/esnext.iterator.join');
require('../../modules/esnext.iterator.map');
require('../../modules/esnext.iterator.reduce');
require('../../modules/esnext.iterator.some');
@@ -14,6 +14,7 @@ require('../../modules/esnext.iterator.flat-map');
require('../../modules/esnext.iterator.for-each');
require('../../modules/esnext.iterator.from');
require('../../modules/esnext.iterator.includes');
require('../../modules/esnext.iterator.join');
require('../../modules/esnext.iterator.map');
require('../../modules/esnext.iterator.reduce');
require('../../modules/esnext.iterator.some');
+8
View File
@@ -0,0 +1,8 @@
'use strict';
require('../../modules/es.object.to-string');
require('../../modules/es.iterator.constructor');
require('../../modules/esnext.iterator.join');
var entryUnbind = require('../../internals/entry-unbind');
module.exports = entryUnbind('Iterator', 'join');
@@ -2,6 +2,7 @@
var parent = require('../../stable/iterator/zip');
require('../../modules/esnext.iterator.chunks');
require('../../modules/esnext.iterator.includes');
require('../../modules/esnext.iterator.join');
require('../../modules/esnext.iterator.windows');
require('../../modules/esnext.iterator.zip-keyed');
+1
View File
@@ -2,6 +2,7 @@
var parent = require('../../stable/iterator/zip');
require('../../modules/esnext.iterator.chunks');
require('../../modules/esnext.iterator.includes');
require('../../modules/esnext.iterator.join');
require('../../modules/esnext.iterator.windows');
require('../../modules/esnext.iterator.zip');
+4
View File
@@ -0,0 +1,4 @@
'use strict';
var parent = require('../../actual/iterator/join');
module.exports = parent;
+1
View File
@@ -18,6 +18,7 @@ require('../../modules/es.iterator.to-array');
require('../../modules/esnext.iterator.constructor');
require('../../modules/esnext.iterator.chunks');
require('../../modules/esnext.iterator.includes');
require('../../modules/esnext.iterator.join');
require('../../modules/esnext.iterator.range');
require('../../modules/esnext.iterator.sliding');
require('../../modules/esnext.iterator.windows');
@@ -0,0 +1,31 @@
'use strict';
var $ = require('../internals/export');
var $toString = require('../internals/to-string');
var anObject = require('../internals/an-object');
var isNullOrUndefined = require('../internals/is-null-or-undefined');
var iterate = require('../internals/iterate');
var iteratorClose = require('../internals/iterator-close');
var uncurryThis = require('../internals/function-uncurry-this');
var IS_PURE = require('../internals/is-pure');
var $join = uncurryThis([].join);
var push = uncurryThis([].push);
// `Iterator.prototype.join` method
// https://github.com/tc39/proposal-iterator-join
$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
join: function join(separator) {
anObject(this);
var sep;
try {
sep = separator === undefined ? ',' : $toString(separator);
} catch (error) {
iteratorClose(this, 'throw', error);
}
var result = [];
iterate(this, function (value) {
push(result, isNullOrUndefined(value) ? '' : $toString(value));
}, { IS_ITERATOR: true });
return $join(result, sep);
}
});
@@ -0,0 +1,3 @@
'use strict';
// https://github.com/tc39/proposal-iterator-join
require('../modules/esnext.iterator.join');
+1
View File
@@ -3,6 +3,7 @@ var parent = require('./4');
require('../proposals/decorator-metadata-v2');
require('../proposals/iterator-includes');
require('../proposals/iterator-join');
require('../proposals/joint-iteration');
// TODO: Obsolete versions, remove from `core-js@4`
require('../proposals/array-grouping-stage-3');