core-js 3.6.2 → 3.7.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 (110) hide show
  1. package/es/aggregate-error.js +6 -0
  2. package/es/index.js +33 -29
  3. package/es/object/index.js +2 -1
  4. package/es/object/to-string.js +3 -2
  5. package/es/promise/any.js +12 -0
  6. package/es/promise/index.js +4 -2
  7. package/es/reflect/index.js +1 -0
  8. package/es/reflect/to-string-tag.js +3 -0
  9. package/es/string/index.js +1 -0
  10. package/es/string/replace-all.js +4 -0
  11. package/es/string/virtual/index.js +1 -0
  12. package/es/string/virtual/replace-all.js +4 -0
  13. package/es/symbol/index.js +2 -1
  14. package/es/symbol/to-string-tag.js +2 -1
  15. package/features/aggregate-error.js +4 -4
  16. package/features/map/emplace.js +5 -0
  17. package/features/map/index.js +2 -0
  18. package/features/promise/any.js +4 -9
  19. package/features/reflect/to-string-tag.js +3 -0
  20. package/features/string/replace-all.js +4 -2
  21. package/features/string/virtual/replace-all.js +4 -2
  22. package/features/weak-map/emplace.js +5 -0
  23. package/features/weak-map/index.js +2 -0
  24. package/internals/array-last-index-of.js +2 -1
  25. package/internals/array-method-uses-to-length.js +5 -8
  26. package/internals/async-iterator-iteration.js +25 -6
  27. package/internals/call-with-safe-iteration-closing.js +2 -2
  28. package/internals/collection-from.js +5 -5
  29. package/internals/collection-strong.js +1 -1
  30. package/internals/collection-weak.js +1 -1
  31. package/internals/collection.js +1 -1
  32. package/internals/correct-is-regexp-logic.js +2 -2
  33. package/internals/engine-is-node.js +4 -0
  34. package/internals/fix-regexp-well-known-symbol-logic.js +18 -2
  35. package/internals/global.js +1 -1
  36. package/internals/internal-state.js +4 -1
  37. package/internals/iterate.js +26 -11
  38. package/internals/iterator-close.js +8 -0
  39. package/internals/map-emplace.js +13 -0
  40. package/internals/microtask.js +8 -8
  41. package/internals/redefine.js +8 -2
  42. package/internals/shared.js +1 -1
  43. package/internals/task.js +9 -3
  44. package/modules/es.aggregate-error.js +31 -0
  45. package/modules/es.array.reduce-right.js +8 -2
  46. package/modules/es.array.reduce.js +6 -1
  47. package/modules/es.object.from-entries.js +1 -1
  48. package/modules/es.promise.all-settled.js +2 -2
  49. package/modules/es.promise.any.js +46 -0
  50. package/modules/es.promise.js +27 -25
  51. package/modules/es.reflect.set.js +3 -2
  52. package/modules/es.reflect.to-string-tag.js +9 -0
  53. package/modules/es.string.replace-all.js +50 -0
  54. package/modules/es.string.replace.js +8 -1
  55. package/modules/esnext.aggregate-error.js +2 -45
  56. package/modules/esnext.async-iterator.take.js +12 -3
  57. package/modules/esnext.iterator.every.js +3 -3
  58. package/modules/esnext.iterator.find.js +3 -3
  59. package/modules/esnext.iterator.flat-map.js +21 -15
  60. package/modules/esnext.iterator.for-each.js +1 -1
  61. package/modules/esnext.iterator.reduce.js +1 -1
  62. package/modules/esnext.iterator.some.js +3 -3
  63. package/modules/esnext.iterator.take.js +4 -2
  64. package/modules/esnext.iterator.to-array.js +1 -1
  65. package/modules/esnext.map.emplace.js +10 -0
  66. package/modules/esnext.map.every.js +3 -3
  67. package/modules/esnext.map.filter.js +1 -1
  68. package/modules/esnext.map.find-key.js +3 -3
  69. package/modules/esnext.map.find.js +3 -3
  70. package/modules/esnext.map.includes.js +3 -3
  71. package/modules/esnext.map.key-of.js +3 -3
  72. package/modules/esnext.map.map-keys.js +1 -1
  73. package/modules/esnext.map.map-values.js +1 -1
  74. package/modules/esnext.map.merge.js +1 -1
  75. package/modules/esnext.map.reduce.js +1 -1
  76. package/modules/esnext.map.some.js +3 -3
  77. package/modules/esnext.map.update-or-insert.js +1 -1
  78. package/modules/esnext.map.upsert.js +2 -1
  79. package/modules/esnext.observable.js +3 -3
  80. package/modules/esnext.promise.any.js +2 -46
  81. package/modules/esnext.reflect.get-metadata-keys.js +1 -1
  82. package/modules/esnext.set.every.js +3 -3
  83. package/modules/esnext.set.filter.js +1 -1
  84. package/modules/esnext.set.find.js +3 -3
  85. package/modules/esnext.set.is-disjoint-from.js +3 -3
  86. package/modules/esnext.set.is-subset-of.js +3 -3
  87. package/modules/esnext.set.is-superset-of.js +3 -3
  88. package/modules/esnext.set.join.js +1 -1
  89. package/modules/esnext.set.map.js +1 -1
  90. package/modules/esnext.set.reduce.js +1 -1
  91. package/modules/esnext.set.some.js +3 -3
  92. package/modules/esnext.set.union.js +1 -1
  93. package/modules/esnext.string.replace-all.js +2 -50
  94. package/modules/esnext.weak-map.emplace.js +10 -0
  95. package/modules/esnext.weak-map.upsert.js +3 -2
  96. package/modules/web.queue-microtask.js +2 -3
  97. package/modules/web.url-search-params.js +1 -1
  98. package/modules/web.url.js +1 -1
  99. package/package.json +1 -1
  100. package/postinstall.js +3 -1
  101. package/proposals/efficient-64-bit-arithmetic.js +1 -0
  102. package/proposals/map-upsert.js +4 -0
  103. package/proposals/object-iteration.js +1 -0
  104. package/stable/aggregate-error.js +6 -0
  105. package/stable/promise/any.js +3 -0
  106. package/stable/reflect/to-string-tag.js +3 -0
  107. package/stable/string/replace-all.js +3 -0
  108. package/stable/string/virtual/replace-all.js +3 -0
  109. package/stage/3.js +0 -2
  110. package/stage/4.js +2 -0
@@ -0,0 +1,6 @@
1
+ require('../modules/es.aggregate-error');
2
+ require('../modules/es.string.iterator');
3
+ require('../modules/web.dom-collections.iterator');
4
+ var path = require('../internals/path');
5
+
6
+ module.exports = path.AggregateError;
package/es/index.js CHANGED
@@ -13,35 +13,7 @@ require('../modules/es.symbol.split');
13
13
  require('../modules/es.symbol.to-primitive');
14
14
  require('../modules/es.symbol.to-string-tag');
15
15
  require('../modules/es.symbol.unscopables');
16
- require('../modules/es.object.assign');
17
- require('../modules/es.object.create');
18
- require('../modules/es.object.define-property');
19
- require('../modules/es.object.define-properties');
20
- require('../modules/es.object.entries');
21
- require('../modules/es.object.freeze');
22
- require('../modules/es.object.from-entries');
23
- require('../modules/es.object.get-own-property-descriptor');
24
- require('../modules/es.object.get-own-property-descriptors');
25
- require('../modules/es.object.get-own-property-names');
26
- require('../modules/es.object.get-prototype-of');
27
- require('../modules/es.object.is');
28
- require('../modules/es.object.is-extensible');
29
- require('../modules/es.object.is-frozen');
30
- require('../modules/es.object.is-sealed');
31
- require('../modules/es.object.keys');
32
- require('../modules/es.object.prevent-extensions');
33
- require('../modules/es.object.seal');
34
- require('../modules/es.object.set-prototype-of');
35
- require('../modules/es.object.values');
36
- require('../modules/es.object.to-string');
37
- require('../modules/es.object.define-getter');
38
- require('../modules/es.object.define-setter');
39
- require('../modules/es.object.lookup-getter');
40
- require('../modules/es.object.lookup-setter');
41
- require('../modules/es.function.bind');
42
- require('../modules/es.function.name');
43
- require('../modules/es.function.has-instance');
44
- require('../modules/es.global-this');
16
+ require('../modules/es.aggregate-error');
45
17
  require('../modules/es.array.from');
46
18
  require('../modules/es.array.is-array');
47
19
  require('../modules/es.array.of');
@@ -71,6 +43,35 @@ require('../modules/es.array.species');
71
43
  require('../modules/es.array.unscopables.flat');
72
44
  require('../modules/es.array.unscopables.flat-map');
73
45
  require('../modules/es.array.iterator');
46
+ require('../modules/es.function.bind');
47
+ require('../modules/es.function.name');
48
+ require('../modules/es.function.has-instance');
49
+ require('../modules/es.global-this');
50
+ require('../modules/es.object.assign');
51
+ require('../modules/es.object.create');
52
+ require('../modules/es.object.define-property');
53
+ require('../modules/es.object.define-properties');
54
+ require('../modules/es.object.entries');
55
+ require('../modules/es.object.freeze');
56
+ require('../modules/es.object.from-entries');
57
+ require('../modules/es.object.get-own-property-descriptor');
58
+ require('../modules/es.object.get-own-property-descriptors');
59
+ require('../modules/es.object.get-own-property-names');
60
+ require('../modules/es.object.get-prototype-of');
61
+ require('../modules/es.object.is');
62
+ require('../modules/es.object.is-extensible');
63
+ require('../modules/es.object.is-frozen');
64
+ require('../modules/es.object.is-sealed');
65
+ require('../modules/es.object.keys');
66
+ require('../modules/es.object.prevent-extensions');
67
+ require('../modules/es.object.seal');
68
+ require('../modules/es.object.set-prototype-of');
69
+ require('../modules/es.object.values');
70
+ require('../modules/es.object.to-string');
71
+ require('../modules/es.object.define-getter');
72
+ require('../modules/es.object.define-setter');
73
+ require('../modules/es.object.lookup-getter');
74
+ require('../modules/es.object.lookup-setter');
74
75
  require('../modules/es.string.from-code-point');
75
76
  require('../modules/es.string.raw');
76
77
  require('../modules/es.string.code-point-at');
@@ -102,6 +103,7 @@ require('../modules/es.string.small');
102
103
  require('../modules/es.string.strike');
103
104
  require('../modules/es.string.sub');
104
105
  require('../modules/es.string.sup');
106
+ require('../modules/es.string.replace-all');
105
107
  require('../modules/es.regexp.constructor');
106
108
  require('../modules/es.regexp.exec');
107
109
  require('../modules/es.regexp.flags');
@@ -149,6 +151,7 @@ require('../modules/es.json.stringify');
149
151
  require('../modules/es.json.to-string-tag');
150
152
  require('../modules/es.promise');
151
153
  require('../modules/es.promise.all-settled');
154
+ require('../modules/es.promise.any');
152
155
  require('../modules/es.promise.finally');
153
156
  require('../modules/es.map');
154
157
  require('../modules/es.set');
@@ -205,6 +208,7 @@ require('../modules/es.reflect.own-keys');
205
208
  require('../modules/es.reflect.prevent-extensions');
206
209
  require('../modules/es.reflect.set');
207
210
  require('../modules/es.reflect.set-prototype-of');
211
+ require('../modules/es.reflect.to-string-tag');
208
212
  var path = require('../internals/path');
209
213
 
210
214
  module.exports = path;
@@ -24,8 +24,9 @@ require('../../modules/es.object.define-getter');
24
24
  require('../../modules/es.object.define-setter');
25
25
  require('../../modules/es.object.lookup-getter');
26
26
  require('../../modules/es.object.lookup-setter');
27
- require('../../modules/es.math.to-string-tag');
28
27
  require('../../modules/es.json.to-string-tag');
28
+ require('../../modules/es.math.to-string-tag');
29
+ require('../../modules/es.reflect.to-string-tag');
29
30
  var path = require('../../internals/path');
30
31
 
31
32
  module.exports = path.Object;
@@ -1,6 +1,7 @@
1
- require('../../modules/es.object.to-string');
2
- require('../../modules/es.math.to-string-tag');
3
1
  require('../../modules/es.json.to-string-tag');
2
+ require('../../modules/es.math.to-string-tag');
3
+ require('../../modules/es.object.to-string');
4
+ require('../../modules/es.reflect.to-string-tag');
4
5
  var classof = require('../../internals/classof');
5
6
 
6
7
  module.exports = function (it) {
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+ require('../../modules/es.aggregate-error');
3
+ require('../../modules/es.promise');
4
+ require('../../modules/es.promise.any');
5
+ var path = require('../../internals/path');
6
+
7
+ var Promise = path.Promise;
8
+ var $any = Promise.any;
9
+
10
+ module.exports = function any(iterable) {
11
+ return $any.call(typeof this === 'function' ? this : Promise, iterable);
12
+ };
@@ -1,9 +1,11 @@
1
+ require('../../modules/es.aggregate-error');
1
2
  require('../../modules/es.object.to-string');
2
- require('../../modules/es.string.iterator');
3
- require('../../modules/web.dom-collections.iterator');
4
3
  require('../../modules/es.promise');
5
4
  require('../../modules/es.promise.all-settled');
5
+ require('../../modules/es.promise.any');
6
6
  require('../../modules/es.promise.finally');
7
+ require('../../modules/es.string.iterator');
8
+ require('../../modules/web.dom-collections.iterator');
7
9
  var path = require('../../internals/path');
8
10
 
9
11
  module.exports = path.Promise;
@@ -11,6 +11,7 @@ require('../../modules/es.reflect.own-keys');
11
11
  require('../../modules/es.reflect.prevent-extensions');
12
12
  require('../../modules/es.reflect.set');
13
13
  require('../../modules/es.reflect.set-prototype-of');
14
+ require('../../modules/es.reflect.to-string-tag');
14
15
  var path = require('../../internals/path');
15
16
 
16
17
  module.exports = path.Reflect;
@@ -0,0 +1,3 @@
1
+ require('../../modules/es.reflect.to-string-tag');
2
+
3
+ module.exports = 'Reflect';
@@ -10,6 +10,7 @@ require('../../modules/es.string.pad-end');
10
10
  require('../../modules/es.string.pad-start');
11
11
  require('../../modules/es.string.repeat');
12
12
  require('../../modules/es.string.replace');
13
+ require('../../modules/es.string.replace-all');
13
14
  require('../../modules/es.string.search');
14
15
  require('../../modules/es.string.split');
15
16
  require('../../modules/es.string.starts-with');
@@ -0,0 +1,4 @@
1
+ require('../../modules/es.string.replace-all');
2
+ var entryUnbind = require('../../internals/entry-unbind');
3
+
4
+ module.exports = entryUnbind('String', 'replaceAll');
@@ -7,6 +7,7 @@ require('../../../modules/es.string.pad-end');
7
7
  require('../../../modules/es.string.pad-start');
8
8
  require('../../../modules/es.string.repeat');
9
9
  require('../../../modules/es.string.replace');
10
+ require('../../../modules/es.string.replace-all');
10
11
  require('../../../modules/es.string.search');
11
12
  require('../../../modules/es.string.split');
12
13
  require('../../../modules/es.string.starts-with');
@@ -0,0 +1,4 @@
1
+ require('../../../modules/es.string.replace-all');
2
+ var entryVirtual = require('../../../internals/entry-virtual');
3
+
4
+ module.exports = entryVirtual('String').replaceAll;
@@ -15,8 +15,9 @@ require('../../modules/es.symbol.split');
15
15
  require('../../modules/es.symbol.to-primitive');
16
16
  require('../../modules/es.symbol.to-string-tag');
17
17
  require('../../modules/es.symbol.unscopables');
18
- require('../../modules/es.math.to-string-tag');
19
18
  require('../../modules/es.json.to-string-tag');
19
+ require('../../modules/es.math.to-string-tag');
20
+ require('../../modules/es.reflect.to-string-tag');
20
21
  var path = require('../../internals/path');
21
22
 
22
23
  module.exports = path.Symbol;
@@ -1,7 +1,8 @@
1
1
  require('../../modules/es.symbol.to-string-tag');
2
2
  require('../../modules/es.object.to-string');
3
- require('../../modules/es.math.to-string-tag');
4
3
  require('../../modules/es.json.to-string-tag');
4
+ require('../../modules/es.math.to-string-tag');
5
+ require('../../modules/es.reflect.to-string-tag');
5
6
  var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
6
7
 
7
8
  module.exports = WrappedWellKnownSymbolModule.f('toStringTag');
@@ -1,6 +1,6 @@
1
- require('../modules/web.dom-collections.iterator');
2
- require('../modules/es.string.iterator');
1
+ // TODO: remove from `core-js@4`
3
2
  require('../modules/esnext.aggregate-error');
4
- var path = require('../internals/path');
5
3
 
6
- module.exports = path.AggregateError;
4
+ var parent = require('../stable/aggregate-error');
5
+
6
+ module.exports = parent;
@@ -0,0 +1,5 @@
1
+ require('../../modules/es.map');
2
+ require('../../modules/esnext.map.emplace');
3
+ var entryUnbind = require('../../internals/entry-unbind');
4
+
5
+ module.exports = entryUnbind('Map', 'emplace');
@@ -2,6 +2,7 @@ var parent = require('../../es/map');
2
2
  require('../../modules/esnext.map.from');
3
3
  require('../../modules/esnext.map.of');
4
4
  require('../../modules/esnext.map.delete-all');
5
+ require('../../modules/esnext.map.emplace');
5
6
  require('../../modules/esnext.map.every');
6
7
  require('../../modules/esnext.map.filter');
7
8
  require('../../modules/esnext.map.find');
@@ -16,6 +17,7 @@ require('../../modules/esnext.map.merge');
16
17
  require('../../modules/esnext.map.reduce');
17
18
  require('../../modules/esnext.map.some');
18
19
  require('../../modules/esnext.map.update');
20
+ // TODO: remove from `core-js@4`
19
21
  require('../../modules/esnext.map.upsert');
20
22
  // TODO: remove from `core-js@4`
21
23
  require('../../modules/esnext.map.update-or-insert');
@@ -1,12 +1,7 @@
1
- 'use strict';
2
- require('../../modules/es.promise');
1
+ var parent = require('../../es/promise/any');
2
+
3
+ // TODO: Remove from `core-js@4`
3
4
  require('../../modules/esnext.aggregate-error');
4
5
  require('../../modules/esnext.promise.any');
5
- var path = require('../../internals/path');
6
-
7
- var Promise = path.Promise;
8
- var $any = Promise.any;
9
6
 
10
- module.exports = function any(iterable) {
11
- return $any.call(typeof this === 'function' ? this : Promise, iterable);
12
- };
7
+ module.exports = parent;
@@ -0,0 +1,3 @@
1
+ require('../../modules/es.reflect.to-string-tag');
2
+
3
+ module.exports = 'Reflect';
@@ -1,4 +1,6 @@
1
+ // TODO: remove from `core-js@4`
1
2
  require('../../modules/esnext.string.replace-all');
2
- var entryUnbind = require('../../internals/entry-unbind');
3
3
 
4
- module.exports = entryUnbind('String', 'replaceAll');
4
+ var parent = require('../../es/string/replace-all');
5
+
6
+ module.exports = parent;
@@ -1,4 +1,6 @@
1
+ // TODO: remove from `core-js@4`
1
2
  require('../../../modules/esnext.string.replace-all');
2
- var entryVirtual = require('../../../internals/entry-virtual');
3
3
 
4
- module.exports = entryVirtual('String').replaceAll;
4
+ var parent = require('../../../es/string/virtual/replace-all');
5
+
6
+ module.exports = parent;
@@ -0,0 +1,5 @@
1
+ require('../../modules/es.weak-map');
2
+ require('../../modules/esnext.weak-map.emplace');
3
+ var entryUnbind = require('../../internals/entry-unbind');
4
+
5
+ module.exports = entryUnbind('WeakMap', 'emplace');
@@ -1,7 +1,9 @@
1
1
  var parent = require('../../es/weak-map');
2
+ require('../../modules/esnext.weak-map.emplace');
2
3
  require('../../modules/esnext.weak-map.from');
3
4
  require('../../modules/esnext.weak-map.of');
4
5
  require('../../modules/esnext.weak-map.delete-all');
6
+ // TODO: remove from `core-js@4`
5
7
  require('../../modules/esnext.weak-map.upsert');
6
8
 
7
9
  module.exports = parent;
@@ -9,7 +9,8 @@ var min = Math.min;
9
9
  var nativeLastIndexOf = [].lastIndexOf;
10
10
  var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;
11
11
  var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');
12
- var USES_TO_LENGTH = arrayMethodUsesToLength('lastIndexOf', { ACCESSORS: true, 1: 2147483647 });
12
+ // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method
13
+ var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
13
14
  var FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;
14
15
 
15
16
  // `Array.prototype.lastIndexOf` method implementation
@@ -3,28 +3,25 @@ var fails = require('../internals/fails');
3
3
  var has = require('../internals/has');
4
4
 
5
5
  var defineProperty = Object.defineProperty;
6
+ var cache = {};
6
7
 
7
8
  var thrower = function (it) { throw it; };
8
9
 
9
10
  module.exports = function (METHOD_NAME, options) {
11
+ if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];
10
12
  if (!options) options = {};
11
13
  var method = [][METHOD_NAME];
12
14
  var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;
13
15
  var argument0 = has(options, 0) ? options[0] : thrower;
14
16
  var argument1 = has(options, 1) ? options[1] : undefined;
15
17
 
16
- return !!method && !fails(function () {
18
+ return cache[METHOD_NAME] = !!method && !fails(function () {
17
19
  if (ACCESSORS && !DESCRIPTORS) return true;
18
20
  var O = { length: -1 };
19
21
 
20
- var addTrap = function (key) {
21
- if (ACCESSORS) defineProperty(O, key, { enumerable: true, get: thrower });
22
- else O[key] = 1;
23
- };
22
+ if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });
23
+ else O[1] = 1;
24
24
 
25
- addTrap(1);
26
- addTrap(2147483646);
27
- addTrap(4294967294);
28
25
  method.call(O, argument0, argument1);
29
26
  });
30
27
  };
@@ -19,6 +19,25 @@ var createMethod = function (TYPE) {
19
19
  if (!IS_TO_ARRAY) aFunction(fn);
20
20
 
21
21
  return new Promise(function (resolve, reject) {
22
+ var closeIteration = function (method, argument) {
23
+ try {
24
+ var returnMethod = iterator['return'];
25
+ if (returnMethod !== undefined) {
26
+ return Promise.resolve(returnMethod.call(iterator)).then(function () {
27
+ method(argument);
28
+ }, function (error) {
29
+ reject(error);
30
+ });
31
+ }
32
+ } catch (error2) {
33
+ return reject(error2);
34
+ } method(argument);
35
+ };
36
+
37
+ var onError = function (error) {
38
+ closeIteration(reject, error);
39
+ };
40
+
22
41
  var loop = function () {
23
42
  try {
24
43
  Promise.resolve(anObject(next.call(iterator))).then(function (step) {
@@ -35,16 +54,16 @@ var createMethod = function (TYPE) {
35
54
  if (IS_FOR_EACH) {
36
55
  loop();
37
56
  } else if (IS_EVERY) {
38
- result ? loop() : resolve(false);
57
+ result ? loop() : closeIteration(resolve, false);
39
58
  } else {
40
- result ? resolve(IS_SOME || value) : loop();
59
+ result ? closeIteration(resolve, IS_SOME || value) : loop();
41
60
  }
42
- }, reject);
61
+ }, onError);
43
62
  }
44
63
  }
45
- } catch (err) { reject(err); }
46
- }, reject);
47
- } catch (error) { reject(error); }
64
+ } catch (error) { onError(error); }
65
+ }, onError);
66
+ } catch (error2) { onError(error2); }
48
67
  };
49
68
 
50
69
  loop();
@@ -1,4 +1,5 @@
1
1
  var anObject = require('../internals/an-object');
2
+ var iteratorClose = require('../internals/iterator-close');
2
3
 
3
4
  // call something on iterator step with safe closing on error
4
5
  module.exports = function (iterator, fn, value, ENTRIES) {
@@ -6,8 +7,7 @@ module.exports = function (iterator, fn, value, ENTRIES) {
6
7
  return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
7
8
  // 7.4.6 IteratorClose(iterator, completion)
8
9
  } catch (error) {
9
- var returnMethod = iterator['return'];
10
- if (returnMethod !== undefined) anObject(returnMethod.call(iterator));
10
+ iteratorClose(iterator);
11
11
  throw error;
12
12
  }
13
13
  };
@@ -7,20 +7,20 @@ var iterate = require('../internals/iterate');
7
7
  module.exports = function from(source /* , mapFn, thisArg */) {
8
8
  var length = arguments.length;
9
9
  var mapFn = length > 1 ? arguments[1] : undefined;
10
- var mapping, A, n, boundFunction;
10
+ var mapping, array, n, boundFunction;
11
11
  aFunction(this);
12
12
  mapping = mapFn !== undefined;
13
13
  if (mapping) aFunction(mapFn);
14
14
  if (source == undefined) return new this();
15
- A = [];
15
+ array = [];
16
16
  if (mapping) {
17
17
  n = 0;
18
18
  boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined, 2);
19
19
  iterate(source, function (nextItem) {
20
- A.push(boundFunction(nextItem, n++));
20
+ array.push(boundFunction(nextItem, n++));
21
21
  });
22
22
  } else {
23
- iterate(source, A.push, A);
23
+ iterate(source, array.push, { that: array });
24
24
  }
25
- return new this(A);
25
+ return new this(array);
26
26
  };
@@ -26,7 +26,7 @@ module.exports = {
26
26
  size: 0
27
27
  });
28
28
  if (!DESCRIPTORS) that.size = 0;
29
- if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);
29
+ if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
30
30
  });
31
31
 
32
32
  var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
@@ -61,7 +61,7 @@ module.exports = {
61
61
  id: id++,
62
62
  frozen: undefined
63
63
  });
64
- if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);
64
+ if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
65
65
  });
66
66
 
67
67
  var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
@@ -69,7 +69,7 @@ module.exports = function (CONSTRUCTOR_NAME, wrapper, common) {
69
69
  Constructor = wrapper(function (dummy, iterable) {
70
70
  anInstance(dummy, Constructor, CONSTRUCTOR_NAME);
71
71
  var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);
72
- if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);
72
+ if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
73
73
  return that;
74
74
  });
75
75
  Constructor.prototype = NativePrototype;
@@ -6,10 +6,10 @@ module.exports = function (METHOD_NAME) {
6
6
  var regexp = /./;
7
7
  try {
8
8
  '/./'[METHOD_NAME](regexp);
9
- } catch (e) {
9
+ } catch (error1) {
10
10
  try {
11
11
  regexp[MATCH] = false;
12
12
  return '/./'[METHOD_NAME](regexp);
13
- } catch (f) { /* empty */ }
13
+ } catch (error2) { /* empty */ }
14
14
  } return false;
15
15
  };
@@ -0,0 +1,4 @@
1
+ var classof = require('../internals/classof-raw');
2
+ var global = require('../internals/global');
3
+
4
+ module.exports = classof(global.process) == 'process';
@@ -28,6 +28,15 @@ var REPLACE_KEEPS_$0 = (function () {
28
28
  return 'a'.replace(/./, '$0') === '$0';
29
29
  })();
30
30
 
31
+ var REPLACE = wellKnownSymbol('replace');
32
+ // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
33
+ var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
34
+ if (/./[REPLACE]) {
35
+ return /./[REPLACE]('a', '$0') === '';
36
+ }
37
+ return false;
38
+ })();
39
+
31
40
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
32
41
  // Weex JS has frozen built-in prototypes, so use try / catch wrapper
33
42
  var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
@@ -75,7 +84,11 @@ module.exports = function (KEY, length, exec, sham) {
75
84
  if (
76
85
  !DELEGATES_TO_SYMBOL ||
77
86
  !DELEGATES_TO_EXEC ||
78
- (KEY === 'replace' && !(REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0)) ||
87
+ (KEY === 'replace' && !(
88
+ REPLACE_SUPPORTS_NAMED_GROUPS &&
89
+ REPLACE_KEEPS_$0 &&
90
+ !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
91
+ )) ||
79
92
  (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
80
93
  ) {
81
94
  var nativeRegExpMethod = /./[SYMBOL];
@@ -90,7 +103,10 @@ module.exports = function (KEY, length, exec, sham) {
90
103
  return { done: true, value: nativeMethod.call(str, regexp, arg2) };
91
104
  }
92
105
  return { done: false };
93
- }, { REPLACE_KEEPS_$0: REPLACE_KEEPS_$0 });
106
+ }, {
107
+ REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,
108
+ REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
109
+ });
94
110
  var stringMethod = methods[0];
95
111
  var regexMethod = methods[1];
96
112
 
@@ -10,4 +10,4 @@ module.exports =
10
10
  check(typeof self == 'object' && self) ||
11
11
  check(typeof global == 'object' && global) ||
12
12
  // eslint-disable-next-line no-new-func
13
- Function('return this')();
13
+ (function () { return this; })() || Function('return this')();
@@ -3,6 +3,7 @@ var global = require('../internals/global');
3
3
  var isObject = require('../internals/is-object');
4
4
  var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
5
5
  var objectHas = require('../internals/has');
6
+ var shared = require('../internals/shared-store');
6
7
  var sharedKey = require('../internals/shared-key');
7
8
  var hiddenKeys = require('../internals/hidden-keys');
8
9
 
@@ -23,11 +24,12 @@ var getterFor = function (TYPE) {
23
24
  };
24
25
 
25
26
  if (NATIVE_WEAK_MAP) {
26
- var store = new WeakMap();
27
+ var store = shared.state || (shared.state = new WeakMap());
27
28
  var wmget = store.get;
28
29
  var wmhas = store.has;
29
30
  var wmset = store.set;
30
31
  set = function (it, metadata) {
32
+ metadata.facade = it;
31
33
  wmset.call(store, it, metadata);
32
34
  return metadata;
33
35
  };
@@ -41,6 +43,7 @@ if (NATIVE_WEAK_MAP) {
41
43
  var STATE = sharedKey('state');
42
44
  hiddenKeys[STATE] = true;
43
45
  set = function (it, metadata) {
46
+ metadata.facade = it;
44
47
  createNonEnumerableProperty(it, STATE, metadata);
45
48
  return metadata;
46
49
  };