core-js 3.49.0 → 3.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/actual/iterator/chunks.js +5 -0
  2. package/actual/iterator/concat.js +4 -0
  3. package/actual/iterator/from.js +4 -0
  4. package/actual/iterator/includes.js +5 -0
  5. package/actual/iterator/index.js +4 -1
  6. package/actual/iterator/join.js +5 -0
  7. package/actual/iterator/windows.js +5 -0
  8. package/actual/iterator/zip-keyed.js +6 -21
  9. package/actual/iterator/zip.js +6 -19
  10. package/actual/promise/all-keyed.js +16 -0
  11. package/actual/promise/all-settled-keyed.js +16 -0
  12. package/actual/promise/index.js +4 -0
  13. package/es/index.js +6 -0
  14. package/es/iterator/chunks.js +8 -0
  15. package/es/iterator/concat.js +4 -0
  16. package/es/iterator/from.js +4 -0
  17. package/es/iterator/includes.js +8 -0
  18. package/es/iterator/index.js +8 -0
  19. package/es/iterator/join.js +8 -0
  20. package/es/iterator/windows.js +8 -0
  21. package/es/iterator/zip-keyed.js +28 -0
  22. package/es/iterator/zip.js +26 -0
  23. package/features/iterator/includes.js +2 -0
  24. package/features/iterator/join.js +2 -0
  25. package/features/promise/all-keyed.js +2 -0
  26. package/features/promise/all-settled-keyed.js +2 -0
  27. package/full/index.js +10 -0
  28. package/full/iterator/chunks.js +2 -6
  29. package/full/iterator/concat.js +0 -2
  30. package/full/iterator/from.js +0 -2
  31. package/full/iterator/includes.js +4 -0
  32. package/full/iterator/index.js +0 -2
  33. package/full/iterator/join.js +4 -0
  34. package/full/iterator/range.js +7 -1
  35. package/full/iterator/windows.js +2 -6
  36. package/full/iterator/zip-keyed.js +0 -2
  37. package/full/iterator/zip.js +0 -2
  38. package/full/promise/all-keyed.js +4 -0
  39. package/full/promise/all-settled-keyed.js +4 -0
  40. package/internals/add-disposable-resource.js +1 -1
  41. package/internals/array-fill.js +2 -1
  42. package/internals/array-from-async.js +2 -2
  43. package/internals/array-from.js +8 -2
  44. package/internals/async-iterator-create-proxy.js +14 -2
  45. package/internals/error-stack-clear.js +1 -1
  46. package/internals/get-async-iterator-flattenable.js +1 -1
  47. package/internals/get-async-iterator.js +1 -1
  48. package/internals/get-internal-iterator.js +1 -0
  49. package/internals/get-iterator-flattenable.js +1 -1
  50. package/internals/get-iterator-internal.js +14 -0
  51. package/internals/get-iterator-method-internal.js +14 -0
  52. package/internals/get-iterator-method.js +4 -7
  53. package/internals/get-iterator-record.js +1 -1
  54. package/internals/get-iterator.js +4 -5
  55. package/internals/is-iterable.js +4 -10
  56. package/internals/iterate.js +2 -2
  57. package/internals/iterator-chunk-size-validation.js +17 -0
  58. package/internals/iterator-cleanup-state.js +6 -0
  59. package/internals/iterator-create-proxy.js +10 -4
  60. package/internals/iterator-window.js +2 -4
  61. package/internals/iterators.js +1 -1
  62. package/internals/math-log1p.js +3 -1
  63. package/internals/shared-store.js +2 -2
  64. package/internals/shared.js +3 -1
  65. package/internals/typed-array-from.js +2 -2
  66. package/internals/uint8-from-base64.js +4 -2
  67. package/internals/uint8-from-hex.js +1 -1
  68. package/internals/url-percent-coding.js +171 -0
  69. package/modules/es.date.to-json.js +1 -1
  70. package/modules/es.escape.js +10 -8
  71. package/modules/es.iterator.chunks.js +42 -0
  72. package/modules/es.iterator.concat.js +1 -1
  73. package/modules/es.iterator.drop.js +16 -1
  74. package/modules/es.iterator.flat-map.js +12 -14
  75. package/modules/es.iterator.includes.js +44 -0
  76. package/modules/es.iterator.join.js +31 -0
  77. package/modules/es.iterator.take.js +16 -1
  78. package/modules/es.iterator.windows.js +12 -0
  79. package/modules/es.iterator.zip-keyed.js +70 -0
  80. package/modules/es.iterator.zip.js +92 -0
  81. package/modules/es.json.parse.js +1 -1
  82. package/modules/es.json.stringify.js +150 -34
  83. package/modules/es.map.group-by.js +2 -0
  84. package/modules/es.math.asinh.js +7 -3
  85. package/modules/es.math.cbrt.js +9 -2
  86. package/modules/es.math.sum-precise.js +27 -1
  87. package/modules/es.object.group-by.js +2 -0
  88. package/modules/es.object.proto.js +2 -1
  89. package/modules/es.promise.try.js +16 -8
  90. package/modules/es.regexp.escape.js +2 -1
  91. package/modules/es.string.match-all.js +3 -4
  92. package/modules/es.string.match.js +3 -1
  93. package/modules/es.string.search.js +3 -1
  94. package/modules/es.uint8-array.to-base64.js +22 -5
  95. package/modules/esnext.iterator.chunks.js +2 -43
  96. package/modules/esnext.iterator.includes.js +3 -0
  97. package/modules/esnext.iterator.join.js +3 -0
  98. package/modules/esnext.iterator.windows.js +2 -10
  99. package/modules/esnext.iterator.zip-keyed.js +2 -71
  100. package/modules/esnext.iterator.zip.js +2 -91
  101. package/modules/esnext.observable.from.js +2 -2
  102. package/modules/esnext.promise.all-keyed.js +57 -0
  103. package/modules/esnext.promise.all-settled-keyed.js +62 -0
  104. package/modules/web.url-search-params.constructor.js +11 -143
  105. package/modules/web.url.constructor.js +103 -17
  106. package/modules/web.url.to-json.js +4 -1
  107. package/package.json +4 -1
  108. package/proposals/await-dictionary.js +4 -0
  109. package/proposals/iterator-includes.js +3 -0
  110. package/proposals/iterator-join.js +3 -0
  111. package/stable/index.js +6 -0
  112. package/stable/iterator/chunks.js +4 -0
  113. package/stable/iterator/includes.js +4 -0
  114. package/stable/iterator/join.js +4 -0
  115. package/stable/iterator/windows.js +4 -0
  116. package/stable/iterator/zip-keyed.js +5 -0
  117. package/stable/iterator/zip.js +5 -0
  118. package/stage/3.js +1 -0
  119. package/stage/4.js +3 -0
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var anObject = require('../internals/an-object');
4
+ var call = require('../internals/function-call');
5
+ var createIteratorProxy = require('../internals/iterator-create-proxy');
6
+ var getIteratorDirect = require('../internals/get-iterator-direct');
7
+ var chunkSizeValidation = require('../internals/iterator-chunk-size-validation');
8
+ var uncurryThis = require('../internals/function-uncurry-this');
9
+ var IS_PURE = require('../internals/is-pure');
10
+
11
+ var push = uncurryThis([].push);
12
+
13
+ var IteratorProxy = createIteratorProxy(function () {
14
+ var iterator = this.iterator;
15
+ var next = this.next;
16
+ var chunkSize = this.chunkSize;
17
+ var buffer = [];
18
+ var result, done;
19
+ while (true) {
20
+ result = anObject(call(next, iterator));
21
+ done = !!result.done;
22
+ if (done) {
23
+ if (buffer.length) return buffer;
24
+ this.done = true;
25
+ return;
26
+ }
27
+ push(buffer, result.value);
28
+ if (buffer.length === chunkSize) return buffer;
29
+ }
30
+ });
31
+
32
+ // `Iterator.prototype.chunks` method
33
+ // https://tc39.es/ecma262/#sec-iterator.prototype.chunks
34
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
35
+ chunks: function chunks(chunkSize) {
36
+ anObject(this);
37
+ chunkSizeValidation(chunkSize, this);
38
+ return new IteratorProxy(getIteratorDirect(this), {
39
+ chunkSize: chunkSize
40
+ });
41
+ }
42
+ });
@@ -3,7 +3,7 @@ var $ = require('../internals/export');
3
3
  var call = require('../internals/function-call');
4
4
  var aCallable = require('../internals/a-callable');
5
5
  var anObject = require('../internals/an-object');
6
- var getIteratorMethod = require('../internals/get-iterator-method');
6
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
7
7
  var createIteratorProxy = require('../internals/iterator-create-proxy');
8
8
  var IS_PURE = require('../internals/is-pure');
9
9
 
@@ -11,11 +11,23 @@ var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helpe
11
11
  var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
12
12
  var IS_PURE = require('../internals/is-pure');
13
13
 
14
+ var $RangeError = RangeError;
15
+ var $Infinity = Infinity;
16
+
14
17
  var DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('drop', 0);
15
18
  var dropWithoutClosingOnEarlyError = !IS_PURE && !DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR
16
19
  && iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);
17
20
 
18
- var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError;
21
+ var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError || !function () {
22
+ try {
23
+ // eslint-disable-next-line es/no-iterator, es/no-iterator-prototype-drop -- detection
24
+ Iterator.prototype.drop.call({
25
+ next: function () { return { done: true }; }
26
+ }, 0x20000000000000);
27
+ } catch (error) {
28
+ return error instanceof $RangeError;
29
+ }
30
+ }();
19
31
 
20
32
  var IteratorProxy = createIteratorProxy(function () {
21
33
  var iterator = this.iterator;
@@ -40,6 +52,9 @@ $({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
40
52
  var remaining;
41
53
  try {
42
54
  remaining = toPositiveInteger(notANaN(+limit));
55
+ if (remaining > 0x1FFFFFFFFFFFFF && remaining !== $Infinity) {
56
+ throw new $RangeError('The argument should be a safe integer');
57
+ }
43
58
  } catch (error) {
44
59
  iteratorClose(this, 'throw', error);
45
60
  }
@@ -7,30 +7,28 @@ var getIteratorDirect = require('../internals/get-iterator-direct');
7
7
  var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
8
8
  var createIteratorProxy = require('../internals/iterator-create-proxy');
9
9
  var iteratorClose = require('../internals/iterator-close');
10
+ var fails = require('../internals/fails');
10
11
  var IS_PURE = require('../internals/is-pure');
11
12
  var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
12
13
  var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
13
14
 
14
15
  // Should not throw an error for an iterator without `return` method. Fixed in Safari 26.2
15
16
  // https://bugs.webkit.org/show_bug.cgi?id=297532
16
- function throwsOnIteratorWithoutReturn() {
17
- try {
18
- // eslint-disable-next-line es/no-map, es/no-iterator, es/no-iterator-prototype-flatmap -- required for testing
19
- var it = Iterator.prototype.flatMap.call(new Map([[4, 5]]).entries(), function (v) { return v; });
20
- it.next();
21
- it['return']();
22
- } catch (error) {
23
- return true;
24
- }
25
- }
17
+ var THROWS_ON_ITERATOR_WITHOUT_RETURN = !IS_PURE && fails(function () {
18
+ // eslint-disable-next-line es/no-array-prototype-values, es/no-iterator-prototype-flatmap, es/no-iterator-prototype-find -- testing
19
+ return [1].values()
20
+ .flatMap(function () { return [1]; })
21
+ .find(function () { return true; }) !== 1;
22
+ });
26
23
 
27
- var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE
24
+ var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !THROWS_ON_ITERATOR_WITHOUT_RETURN
28
25
  && !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });
29
- var flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
26
+
27
+ var flatMapWithoutClosingOnEarlyError = !IS_PURE && !THROWS_ON_ITERATOR_WITHOUT_RETURN && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
30
28
  && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);
31
29
 
32
- var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError
33
- || throwsOnIteratorWithoutReturn();
30
+ var FORCED = IS_PURE || THROWS_ON_ITERATOR_WITHOUT_RETURN || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
31
+ || flatMapWithoutClosingOnEarlyError;
34
32
 
35
33
  var IteratorProxy = createIteratorProxy(function () {
36
34
  var iterator = this.iterator;
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var anObject = require('../internals/an-object');
4
+ var isIntegralNumber = require('../internals/is-integral-number');
5
+ var iterate = require('../internals/iterate');
6
+ var iteratorClose = require('../internals/iterator-close');
7
+ var sameValueZero = require('../internals/same-value-zero');
8
+ var IS_PURE = require('../internals/is-pure');
9
+
10
+ var $RangeError = RangeError;
11
+ var $TypeError = TypeError;
12
+ var $Infinity = Infinity;
13
+
14
+ var INVALID_SKIPPED_ELEMENTS = 'skippedElements should be a positive safe integer';
15
+
16
+ // `Iterator.prototype.includes` method
17
+ // https://tc39.es/ecma262/#sec-iterator.prototype.includes
18
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
19
+ includes: function includes(searchElement /* , skippedElements */) {
20
+ anObject(this);
21
+ var skippedElements = arguments.length > 1 ? arguments[1] : undefined;
22
+ var skipped = 0;
23
+ var toSkip;
24
+ try {
25
+ if (skippedElements === undefined) {
26
+ toSkip = 0;
27
+ } else if (skippedElements === $Infinity || skippedElements === -$Infinity || isIntegralNumber(skippedElements)) {
28
+ toSkip = skippedElements;
29
+ } else {
30
+ throw new $TypeError(INVALID_SKIPPED_ELEMENTS);
31
+ }
32
+ if (toSkip < 0 || (toSkip !== $Infinity && toSkip > 0x1FFFFFFFFFFFFF)) {
33
+ throw new $RangeError(INVALID_SKIPPED_ELEMENTS);
34
+ }
35
+ } catch (error) {
36
+ iteratorClose(this, 'throw', error);
37
+ }
38
+
39
+ return iterate(this, function (value, stop) {
40
+ if (skipped < toSkip) skipped++;
41
+ else if (sameValueZero(value, searchElement)) return stop();
42
+ }, { IS_ITERATOR: true, INTERRUPTED: true }).stopped;
43
+ }
44
+ });
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var $toString = require('../internals/to-string');
4
+ var anObject = require('../internals/an-object');
5
+ var isNullOrUndefined = require('../internals/is-null-or-undefined');
6
+ var iterate = require('../internals/iterate');
7
+ var iteratorClose = require('../internals/iterator-close');
8
+ var uncurryThis = require('../internals/function-uncurry-this');
9
+ var IS_PURE = require('../internals/is-pure');
10
+
11
+ var $join = uncurryThis([].join);
12
+ var push = uncurryThis([].push);
13
+
14
+ // `Iterator.prototype.join` method
15
+ // https://tc39.es/ecma262/#sec-iterator.prototype.join
16
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
17
+ join: function join(separator) {
18
+ anObject(this);
19
+ var sep;
20
+ try {
21
+ sep = separator === undefined ? ',' : $toString(separator);
22
+ } catch (error) {
23
+ iteratorClose(this, 'throw', error);
24
+ }
25
+ var result = [];
26
+ iterate(this, function (value) {
27
+ push(result, isNullOrUndefined(value) ? '' : $toString(value));
28
+ }, { IS_ITERATOR: true });
29
+ return $join(result, sep);
30
+ }
31
+ });
@@ -11,11 +11,23 @@ var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helpe
11
11
  var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
12
12
  var IS_PURE = require('../internals/is-pure');
13
13
 
14
+ var $RangeError = RangeError;
15
+ var $Infinity = Infinity;
16
+
14
17
  var TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('take', 1);
15
18
  var takeWithoutClosingOnEarlyError = !IS_PURE && !TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR
16
19
  && iteratorHelperWithoutClosingOnEarlyError('take', RangeError);
17
20
 
18
- var FORCED = IS_PURE || TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR || takeWithoutClosingOnEarlyError;
21
+ var FORCED = IS_PURE || TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR || takeWithoutClosingOnEarlyError || !function () {
22
+ try {
23
+ // eslint-disable-next-line es/no-iterator, es/no-iterator-prototype-take -- detection
24
+ Iterator.prototype.take.call({
25
+ next: function () { return { done: true }; }
26
+ }, 0x20000000000000);
27
+ } catch (error) {
28
+ return error instanceof $RangeError;
29
+ }
30
+ }();
19
31
 
20
32
  var IteratorProxy = createIteratorProxy(function () {
21
33
  var iterator = this.iterator;
@@ -36,6 +48,9 @@ $({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
36
48
  var remaining;
37
49
  try {
38
50
  remaining = toPositiveInteger(notANaN(+limit));
51
+ if (remaining > 0x1FFFFFFFFFFFFF && remaining !== $Infinity) {
52
+ throw new $RangeError('The argument should be a safe integer');
53
+ }
39
54
  } catch (error) {
40
55
  iteratorClose(this, 'throw', error);
41
56
  }
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var iteratorWindow = require('../internals/iterator-window');
4
+ var IS_PURE = require('../internals/is-pure');
5
+
6
+ // `Iterator.prototype.windows` method
7
+ // https://tc39.es/ecma262/#sec-iterator.prototype.windows
8
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
9
+ windows: function windows(windowSize /* , undersized */) {
10
+ return iteratorWindow(this, windowSize, arguments.length < 2 ? undefined : arguments[1]);
11
+ }
12
+ });
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var anObject = require('../internals/an-object');
4
+ var anObjectOrUndefined = require('../internals/an-object-or-undefined');
5
+ var createProperty = require('../internals/create-property');
6
+ var call = require('../internals/function-call');
7
+ var uncurryThis = require('../internals/function-uncurry-this');
8
+ var getBuiltIn = require('../internals/get-built-in');
9
+ var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
10
+ var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
11
+ var getModeOption = require('../internals/get-mode-option');
12
+ var iteratorCloseAll = require('../internals/iterator-close-all');
13
+ var iteratorZip = require('../internals/iterator-zip');
14
+ var IS_PURE = require('../internals/is-pure');
15
+
16
+ var push = uncurryThis([].push);
17
+ var THROW = 'throw';
18
+
19
+ // `Iterator.zipKeyed` method
20
+ // https://github.com/tc39/proposal-joint-iteration
21
+ $({ target: 'Iterator', stat: true, forced: IS_PURE }, {
22
+ zipKeyed: function zipKeyed(iterables /* , options */) {
23
+ anObject(iterables);
24
+ var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
25
+ var mode = getModeOption(options);
26
+ var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
27
+
28
+ var iters = [];
29
+ var padding = [];
30
+ var allKeys = getBuiltIn('Reflect', 'ownKeys')(iterables);
31
+ var keys = [];
32
+ var propertyIsEnumerable = propertyIsEnumerableModule.f;
33
+ var i, key, value;
34
+ for (i = 0; i < allKeys.length; i++) try {
35
+ key = allKeys[i];
36
+ if (!call(propertyIsEnumerable, iterables, key)) continue;
37
+ value = iterables[key];
38
+ if (value !== undefined) {
39
+ push(keys, key);
40
+ push(iters, getIteratorFlattenable(value, false));
41
+ }
42
+ } catch (error) {
43
+ return iteratorCloseAll(iters, THROW, error);
44
+ }
45
+
46
+ var iterCount = iters.length;
47
+ if (mode === 'longest') {
48
+ if (paddingOption === undefined) {
49
+ for (i = 0; i < iterCount; i++) push(padding, undefined);
50
+ } else {
51
+ for (i = 0; i < keys.length; i++) {
52
+ try {
53
+ value = paddingOption[keys[i]];
54
+ } catch (error) {
55
+ return iteratorCloseAll(iters, THROW, error);
56
+ }
57
+ push(padding, value);
58
+ }
59
+ }
60
+ }
61
+
62
+ return iteratorZip(iters, mode, padding, function (results) {
63
+ var obj = getBuiltIn('Object', 'create')(null);
64
+ for (var j = 0; j < iterCount; j++) {
65
+ createProperty(obj, keys[j], results[j]);
66
+ }
67
+ return obj;
68
+ });
69
+ }
70
+ });
@@ -0,0 +1,92 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var anObject = require('../internals/an-object');
4
+ var anObjectOrUndefined = require('../internals/an-object-or-undefined');
5
+ var call = require('../internals/function-call');
6
+ var uncurryThis = require('../internals/function-uncurry-this');
7
+ var getIteratorRecord = require('../internals/get-iterator-record');
8
+ var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
9
+ var getModeOption = require('../internals/get-mode-option');
10
+ var iteratorClose = require('../internals/iterator-close');
11
+ var iteratorCloseAll = require('../internals/iterator-close-all');
12
+ var iteratorZip = require('../internals/iterator-zip');
13
+ var IS_PURE = require('../internals/is-pure');
14
+
15
+ var concat = uncurryThis([].concat);
16
+ var push = uncurryThis([].push);
17
+ var THROW = 'throw';
18
+
19
+ // `Iterator.zip` method
20
+ // https://github.com/tc39/proposal-joint-iteration
21
+ $({ target: 'Iterator', stat: true, forced: IS_PURE }, {
22
+ zip: function zip(iterables /* , options */) {
23
+ anObject(iterables);
24
+ var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
25
+ var mode = getModeOption(options);
26
+ var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
27
+
28
+ var iters = [];
29
+ var padding = [];
30
+ var inputIter = getIteratorRecord(iterables);
31
+ var iter, done, next;
32
+ while (!done) {
33
+ try {
34
+ next = anObject(call(inputIter.next, inputIter.iterator));
35
+ done = next.done;
36
+ } catch (error) {
37
+ return iteratorCloseAll(iters, THROW, error);
38
+ }
39
+ if (!done) {
40
+ try {
41
+ iter = getIteratorFlattenable(next.value, false);
42
+ } catch (error) {
43
+ return iteratorCloseAll(concat([inputIter], iters), THROW, error);
44
+ }
45
+ push(iters, iter);
46
+ }
47
+ }
48
+
49
+ var iterCount = iters.length;
50
+ var i, paddingDone, paddingIter;
51
+ if (mode === 'longest') {
52
+ if (paddingOption === undefined) {
53
+ for (i = 0; i < iterCount; i++) push(padding, undefined);
54
+ } else {
55
+ try {
56
+ paddingIter = getIteratorRecord(paddingOption);
57
+ } catch (error) {
58
+ return iteratorCloseAll(iters, THROW, error);
59
+ }
60
+ var usingIterator = true;
61
+ for (i = 0; i < iterCount; i++) {
62
+ if (usingIterator) {
63
+ try {
64
+ next = anObject(call(paddingIter.next, paddingIter.iterator));
65
+ paddingDone = next.done;
66
+ next = next.value;
67
+ } catch (error) {
68
+ return iteratorCloseAll(iters, THROW, error);
69
+ }
70
+ if (paddingDone) {
71
+ usingIterator = false;
72
+ } else {
73
+ push(padding, next);
74
+ }
75
+ } else {
76
+ push(padding, undefined);
77
+ }
78
+ }
79
+
80
+ if (usingIterator) {
81
+ try {
82
+ iteratorClose(paddingIter.iterator, 'normal');
83
+ } catch (error) {
84
+ return iteratorCloseAll(iters, THROW, error);
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ return iteratorZip(iters, mode, padding);
91
+ }
92
+ });
@@ -38,7 +38,7 @@ var OBJECT = 1;
38
38
 
39
39
  var $parse = function (source, reviver) {
40
40
  source = toString(source);
41
- var context = new Context(source, 0, '');
41
+ var context = new Context(source, 0);
42
42
  var root = context.parse();
43
43
  var value = root.value;
44
44
  var endIndex = context.skip(IS_WHITESPACE, root.end);