core-js 3.33.1 → 3.33.2
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.
|
@@ -10,7 +10,7 @@ var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
|
|
|
10
10
|
|
|
11
11
|
var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
|
|
12
12
|
|
|
13
|
-
module.exports = function
|
|
13
|
+
module.exports = function (obj) {
|
|
14
14
|
var object = anObject(obj);
|
|
15
15
|
var alreadyAsync = true;
|
|
16
16
|
var method = getMethod(object, ASYNC_ITERATOR);
|
|
@@ -2,5 +2,7 @@
|
|
|
2
2
|
var global = require('../internals/global');
|
|
3
3
|
|
|
4
4
|
module.exports = function (CONSTRUCTOR, METHOD) {
|
|
5
|
-
|
|
5
|
+
var Constructor = global[CONSTRUCTOR];
|
|
6
|
+
var Prototype = Constructor && Constructor.prototype;
|
|
7
|
+
return Prototype && Prototype[METHOD];
|
|
6
8
|
};
|
package/internals/shared.js
CHANGED
|
@@ -5,9 +5,9 @@ var store = require('../internals/shared-store');
|
|
|
5
5
|
(module.exports = function (key, value) {
|
|
6
6
|
return store[key] || (store[key] = value !== undefined ? value : {});
|
|
7
7
|
})('versions', []).push({
|
|
8
|
-
version: '3.33.
|
|
8
|
+
version: '3.33.2',
|
|
9
9
|
mode: IS_PURE ? 'pure' : 'global',
|
|
10
10
|
copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',
|
|
11
|
-
license: 'https://github.com/zloirock/core-js/blob/v3.33.
|
|
11
|
+
license: 'https://github.com/zloirock/core-js/blob/v3.33.2/LICENSE',
|
|
12
12
|
source: 'https://github.com/zloirock/core-js'
|
|
13
13
|
});
|
|
@@ -9,18 +9,19 @@ var INVALID_RADIX = 'Invalid radix';
|
|
|
9
9
|
var $RangeError = RangeError;
|
|
10
10
|
var $SyntaxError = SyntaxError;
|
|
11
11
|
var $TypeError = TypeError;
|
|
12
|
-
var
|
|
12
|
+
var pow = Math.pow;
|
|
13
|
+
var valid = /^[\d.a-z]+$/;
|
|
13
14
|
var charAt = uncurryThis(''.charAt);
|
|
14
15
|
var exec = uncurryThis(valid.exec);
|
|
15
16
|
var numberToString = uncurryThis(1.0.toString);
|
|
16
17
|
var stringSlice = uncurryThis(''.slice);
|
|
18
|
+
var split = uncurryThis(''.split);
|
|
17
19
|
|
|
18
20
|
// `Number.fromString` method
|
|
19
21
|
// https://github.com/tc39/proposal-number-fromstring
|
|
20
22
|
$({ target: 'Number', stat: true, forced: true }, {
|
|
21
23
|
fromString: function fromString(string, radix) {
|
|
22
24
|
var sign = 1;
|
|
23
|
-
var R, mathNum;
|
|
24
25
|
if (typeof string != 'string') throw new $TypeError(INVALID_NUMBER_REPRESENTATION);
|
|
25
26
|
if (!string.length) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
|
|
26
27
|
if (charAt(string, 0) === '-') {
|
|
@@ -28,11 +29,13 @@ $({ target: 'Number', stat: true, forced: true }, {
|
|
|
28
29
|
string = stringSlice(string, 1);
|
|
29
30
|
if (!string.length) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
|
|
30
31
|
}
|
|
31
|
-
R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
|
|
32
|
+
var R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
|
|
32
33
|
if (R < 2 || R > 36) throw new $RangeError(INVALID_RADIX);
|
|
33
|
-
if (!exec(valid, string)
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
if (!exec(valid, string)) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
|
|
35
|
+
var parts = split(string, '.');
|
|
36
|
+
var mathNum = parseInt(parts[0], R);
|
|
37
|
+
if (parts.length > 1) mathNum += parseInt(parts[1], R) / pow(R, parts[1].length);
|
|
38
|
+
if (numberToString(mathNum, R) !== string) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
|
|
36
39
|
return sign * mathNum;
|
|
37
40
|
}
|
|
38
41
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var IS_PURE = require('../internals/is-pure');
|
|
3
3
|
var $ = require('../internals/export');
|
|
4
4
|
var global = require('../internals/global');
|
|
5
|
-
var
|
|
5
|
+
var getBuiltIn = require('../internals/get-built-in');
|
|
6
6
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
7
7
|
var fails = require('../internals/fails');
|
|
8
8
|
var uid = require('../internals/uid');
|
|
@@ -22,7 +22,8 @@ var validateArgumentsLength = require('../internals/validate-arguments-length');
|
|
|
22
22
|
var getRegExpFlags = require('../internals/regexp-get-flags');
|
|
23
23
|
var MapHelpers = require('../internals/map-helpers');
|
|
24
24
|
var SetHelpers = require('../internals/set-helpers');
|
|
25
|
-
var
|
|
25
|
+
var setIterate = require('../internals/set-iterate');
|
|
26
|
+
var detachTransferable = require('../internals/detach-transferable');
|
|
26
27
|
var ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');
|
|
27
28
|
var PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');
|
|
28
29
|
|
|
@@ -30,25 +31,17 @@ var Object = global.Object;
|
|
|
30
31
|
var Array = global.Array;
|
|
31
32
|
var Date = global.Date;
|
|
32
33
|
var Error = global.Error;
|
|
33
|
-
var EvalError = global.EvalError;
|
|
34
|
-
var RangeError = global.RangeError;
|
|
35
|
-
var ReferenceError = global.ReferenceError;
|
|
36
|
-
var SyntaxError = global.SyntaxError;
|
|
37
34
|
var TypeError = global.TypeError;
|
|
38
|
-
var URIError = global.URIError;
|
|
39
35
|
var PerformanceMark = global.PerformanceMark;
|
|
40
|
-
var
|
|
41
|
-
var CompileError = WebAssembly && WebAssembly.CompileError || Error;
|
|
42
|
-
var LinkError = WebAssembly && WebAssembly.LinkError || Error;
|
|
43
|
-
var RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;
|
|
44
|
-
var DOMException = getBuiltin('DOMException');
|
|
36
|
+
var DOMException = getBuiltIn('DOMException');
|
|
45
37
|
var Map = MapHelpers.Map;
|
|
46
38
|
var mapHas = MapHelpers.has;
|
|
47
39
|
var mapGet = MapHelpers.get;
|
|
48
40
|
var mapSet = MapHelpers.set;
|
|
49
41
|
var Set = SetHelpers.Set;
|
|
50
42
|
var setAdd = SetHelpers.add;
|
|
51
|
-
var
|
|
43
|
+
var setHas = SetHelpers.has;
|
|
44
|
+
var objectKeys = getBuiltIn('Object', 'keys');
|
|
52
45
|
var push = uncurryThis([].push);
|
|
53
46
|
var thisBooleanValue = uncurryThis(true.valueOf);
|
|
54
47
|
var thisNumberValue = uncurryThis(1.0.valueOf);
|
|
@@ -63,7 +56,7 @@ var checkBasicSemantic = function (structuredCloneImplementation) {
|
|
|
63
56
|
var set1 = new global.Set([7]);
|
|
64
57
|
var set2 = structuredCloneImplementation(set1);
|
|
65
58
|
var number = structuredCloneImplementation(Object(7));
|
|
66
|
-
return set2 === set1 || !set2.has(7) ||
|
|
59
|
+
return set2 === set1 || !set2.has(7) || !isObject(number) || +number !== 7;
|
|
67
60
|
}) && structuredCloneImplementation;
|
|
68
61
|
};
|
|
69
62
|
|
|
@@ -159,10 +152,10 @@ var cloneBuffer = function (value, map, $type) {
|
|
|
159
152
|
|
|
160
153
|
// `ArrayBuffer#slice` is not available in IE10
|
|
161
154
|
// `ArrayBuffer#slice` and `DataView` are not available in old FF
|
|
162
|
-
if (!DataView &&
|
|
155
|
+
if (!DataView && !isCallable(value.slice)) throwUnpolyfillable('ArrayBuffer');
|
|
163
156
|
// detached buffers throws in `DataView` and `.slice`
|
|
164
157
|
try {
|
|
165
|
-
if (
|
|
158
|
+
if (isCallable(value.slice) && !value.resizable) {
|
|
166
159
|
clone = value.slice(0);
|
|
167
160
|
} else {
|
|
168
161
|
length = value.byteLength;
|
|
@@ -192,13 +185,7 @@ var cloneView = function (value, type, offset, length, map) {
|
|
|
192
185
|
return new C(cloneBuffer(value.buffer, map), offset, length);
|
|
193
186
|
};
|
|
194
187
|
|
|
195
|
-
var
|
|
196
|
-
this.object = object;
|
|
197
|
-
this.type = type;
|
|
198
|
-
this.metadata = metadata;
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
var structuredCloneInternal = function (value, map, transferredBuffers) {
|
|
188
|
+
var structuredCloneInternal = function (value, map) {
|
|
202
189
|
if (isSymbol(value)) throwUncloneable('Symbol');
|
|
203
190
|
if (!isObject(value)) return value;
|
|
204
191
|
// effectively preserves circular references
|
|
@@ -231,34 +218,21 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
|
|
|
231
218
|
name = value.name;
|
|
232
219
|
switch (name) {
|
|
233
220
|
case 'AggregateError':
|
|
234
|
-
cloned = new (
|
|
221
|
+
cloned = new (getBuiltIn(name))([]);
|
|
235
222
|
break;
|
|
236
223
|
case 'EvalError':
|
|
237
|
-
cloned = new EvalError();
|
|
238
|
-
break;
|
|
239
224
|
case 'RangeError':
|
|
240
|
-
cloned = new RangeError();
|
|
241
|
-
break;
|
|
242
225
|
case 'ReferenceError':
|
|
243
|
-
|
|
244
|
-
break;
|
|
226
|
+
case 'SuppressedError':
|
|
245
227
|
case 'SyntaxError':
|
|
246
|
-
cloned = new SyntaxError();
|
|
247
|
-
break;
|
|
248
228
|
case 'TypeError':
|
|
249
|
-
cloned = new TypeError();
|
|
250
|
-
break;
|
|
251
229
|
case 'URIError':
|
|
252
|
-
cloned = new
|
|
230
|
+
cloned = new (getBuiltIn(name))();
|
|
253
231
|
break;
|
|
254
232
|
case 'CompileError':
|
|
255
|
-
cloned = new CompileError();
|
|
256
|
-
break;
|
|
257
233
|
case 'LinkError':
|
|
258
|
-
cloned = new LinkError();
|
|
259
|
-
break;
|
|
260
234
|
case 'RuntimeError':
|
|
261
|
-
cloned = new
|
|
235
|
+
cloned = new (getBuiltIn('WebAssembly', name))();
|
|
262
236
|
break;
|
|
263
237
|
default:
|
|
264
238
|
cloned = new Error();
|
|
@@ -269,9 +243,7 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
|
|
|
269
243
|
break;
|
|
270
244
|
case 'ArrayBuffer':
|
|
271
245
|
case 'SharedArrayBuffer':
|
|
272
|
-
cloned =
|
|
273
|
-
? new Placeholder(value, type)
|
|
274
|
-
: cloneBuffer(value, map, type);
|
|
246
|
+
cloned = cloneBuffer(value, map, type);
|
|
275
247
|
break;
|
|
276
248
|
case 'DataView':
|
|
277
249
|
case 'Int8Array':
|
|
@@ -287,17 +259,15 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
|
|
|
287
259
|
case 'BigInt64Array':
|
|
288
260
|
case 'BigUint64Array':
|
|
289
261
|
length = type === 'DataView' ? value.byteLength : value.length;
|
|
290
|
-
cloned =
|
|
291
|
-
? new Placeholder(value, type, { offset: value.byteOffset, length: length })
|
|
292
|
-
: cloneView(value, type, value.byteOffset, length, map);
|
|
262
|
+
cloned = cloneView(value, type, value.byteOffset, length, map);
|
|
293
263
|
break;
|
|
294
264
|
case 'DOMQuad':
|
|
295
265
|
try {
|
|
296
266
|
cloned = new DOMQuad(
|
|
297
|
-
structuredCloneInternal(value.p1, map
|
|
298
|
-
structuredCloneInternal(value.p2, map
|
|
299
|
-
structuredCloneInternal(value.p3, map
|
|
300
|
-
structuredCloneInternal(value.p4, map
|
|
267
|
+
structuredCloneInternal(value.p1, map),
|
|
268
|
+
structuredCloneInternal(value.p2, map),
|
|
269
|
+
structuredCloneInternal(value.p3, map),
|
|
270
|
+
structuredCloneInternal(value.p4, map)
|
|
301
271
|
);
|
|
302
272
|
} catch (error) {
|
|
303
273
|
cloned = tryNativeRestrictedStructuredClone(value, type);
|
|
@@ -318,7 +288,7 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
|
|
|
318
288
|
dataTransfer = createDataTransfer();
|
|
319
289
|
if (dataTransfer) {
|
|
320
290
|
for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {
|
|
321
|
-
dataTransfer.items.add(structuredCloneInternal(value[i], map
|
|
291
|
+
dataTransfer.items.add(structuredCloneInternal(value[i], map));
|
|
322
292
|
}
|
|
323
293
|
cloned = dataTransfer.files;
|
|
324
294
|
} else cloned = tryNativeRestrictedStructuredClone(value, type);
|
|
@@ -327,7 +297,7 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
|
|
|
327
297
|
// Safari 9 ImageData is a constructor, but typeof ImageData is 'object'
|
|
328
298
|
try {
|
|
329
299
|
cloned = new ImageData(
|
|
330
|
-
structuredCloneInternal(value.data, map
|
|
300
|
+
structuredCloneInternal(value.data, map),
|
|
331
301
|
value.width,
|
|
332
302
|
value.height,
|
|
333
303
|
{ colorSpace: value.colorSpace }
|
|
@@ -424,105 +394,38 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
|
|
|
424
394
|
keys = objectKeys(value);
|
|
425
395
|
for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {
|
|
426
396
|
key = keys[i];
|
|
427
|
-
createProperty(cloned, key, structuredCloneInternal(value[key], map
|
|
397
|
+
createProperty(cloned, key, structuredCloneInternal(value[key], map));
|
|
428
398
|
} break;
|
|
429
399
|
case 'Map':
|
|
430
400
|
value.forEach(function (v, k) {
|
|
431
|
-
mapSet(cloned, structuredCloneInternal(k, map
|
|
401
|
+
mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map));
|
|
432
402
|
});
|
|
433
403
|
break;
|
|
434
404
|
case 'Set':
|
|
435
405
|
value.forEach(function (v) {
|
|
436
|
-
setAdd(cloned, structuredCloneInternal(v, map
|
|
406
|
+
setAdd(cloned, structuredCloneInternal(v, map));
|
|
437
407
|
});
|
|
438
408
|
break;
|
|
439
409
|
case 'Error':
|
|
440
|
-
createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map
|
|
410
|
+
createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map));
|
|
441
411
|
if (hasOwn(value, 'cause')) {
|
|
442
|
-
createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map
|
|
412
|
+
createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map));
|
|
443
413
|
}
|
|
444
414
|
if (name === 'AggregateError') {
|
|
445
|
-
cloned.errors = structuredCloneInternal(value.errors, map
|
|
415
|
+
cloned.errors = structuredCloneInternal(value.errors, map);
|
|
416
|
+
} else if (name === 'SuppressedError') {
|
|
417
|
+
cloned.error = structuredCloneInternal(value.error, map);
|
|
418
|
+
cloned.suppressed = structuredCloneInternal(value.suppressed, map);
|
|
446
419
|
} // break omitted
|
|
447
420
|
case 'DOMException':
|
|
448
421
|
if (ERROR_STACK_INSTALLABLE) {
|
|
449
|
-
createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map
|
|
422
|
+
createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map));
|
|
450
423
|
}
|
|
451
424
|
}
|
|
452
425
|
|
|
453
426
|
return cloned;
|
|
454
427
|
};
|
|
455
428
|
|
|
456
|
-
var replacePlaceholders = function (value, map) {
|
|
457
|
-
if (!isObject(value)) return value;
|
|
458
|
-
if (mapHas(map, value)) return mapGet(map, value);
|
|
459
|
-
|
|
460
|
-
var type, object, metadata, i, length, keys, key, replacement;
|
|
461
|
-
|
|
462
|
-
if (value instanceof Placeholder) {
|
|
463
|
-
type = value.type;
|
|
464
|
-
object = value.object;
|
|
465
|
-
|
|
466
|
-
switch (type) {
|
|
467
|
-
case 'ArrayBuffer':
|
|
468
|
-
case 'SharedArrayBuffer':
|
|
469
|
-
replacement = cloneBuffer(object, map, type);
|
|
470
|
-
break;
|
|
471
|
-
case 'DataView':
|
|
472
|
-
case 'Int8Array':
|
|
473
|
-
case 'Uint8Array':
|
|
474
|
-
case 'Uint8ClampedArray':
|
|
475
|
-
case 'Int16Array':
|
|
476
|
-
case 'Uint16Array':
|
|
477
|
-
case 'Int32Array':
|
|
478
|
-
case 'Uint32Array':
|
|
479
|
-
case 'Float16Array':
|
|
480
|
-
case 'Float32Array':
|
|
481
|
-
case 'Float64Array':
|
|
482
|
-
case 'BigInt64Array':
|
|
483
|
-
case 'BigUint64Array':
|
|
484
|
-
metadata = value.metadata;
|
|
485
|
-
replacement = cloneView(object, type, metadata.offset, metadata.length, map);
|
|
486
|
-
}
|
|
487
|
-
} else switch (classof(value)) {
|
|
488
|
-
case 'Array':
|
|
489
|
-
case 'Object':
|
|
490
|
-
keys = objectKeys(value);
|
|
491
|
-
for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {
|
|
492
|
-
key = keys[i];
|
|
493
|
-
value[key] = replacePlaceholders(value[key], map);
|
|
494
|
-
} break;
|
|
495
|
-
case 'Map':
|
|
496
|
-
replacement = new Map();
|
|
497
|
-
value.forEach(function (v, k) {
|
|
498
|
-
mapSet(replacement, replacePlaceholders(k, map), replacePlaceholders(v, map));
|
|
499
|
-
});
|
|
500
|
-
break;
|
|
501
|
-
case 'Set':
|
|
502
|
-
replacement = new Set();
|
|
503
|
-
value.forEach(function (v) {
|
|
504
|
-
setAdd(replacement, replacePlaceholders(v, map));
|
|
505
|
-
});
|
|
506
|
-
break;
|
|
507
|
-
case 'Error':
|
|
508
|
-
value.message = replacePlaceholders(value.message, map);
|
|
509
|
-
if (hasOwn(value, 'cause')) {
|
|
510
|
-
value.cause = replacePlaceholders(value.cause, map);
|
|
511
|
-
}
|
|
512
|
-
if (value.name === 'AggregateError') {
|
|
513
|
-
value.errors = replacePlaceholders(value.errors, map);
|
|
514
|
-
} // break omitted
|
|
515
|
-
case 'DOMException':
|
|
516
|
-
if (ERROR_STACK_INSTALLABLE) {
|
|
517
|
-
value.stack = replacePlaceholders(value.stack, map);
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
mapSet(map, value, replacement || value);
|
|
522
|
-
|
|
523
|
-
return replacement || value;
|
|
524
|
-
};
|
|
525
|
-
|
|
526
429
|
var tryToTransfer = function (rawTransfer, map) {
|
|
527
430
|
if (!isObject(rawTransfer)) throw new TypeError('Transfer option cannot be converted to a sequence');
|
|
528
431
|
|
|
@@ -534,7 +437,7 @@ var tryToTransfer = function (rawTransfer, map) {
|
|
|
534
437
|
|
|
535
438
|
var i = 0;
|
|
536
439
|
var length = lengthOfArrayLike(transfer);
|
|
537
|
-
var buffers =
|
|
440
|
+
var buffers = new Set();
|
|
538
441
|
var value, type, C, transferred, canvas, context;
|
|
539
442
|
|
|
540
443
|
while (i < length) {
|
|
@@ -542,13 +445,15 @@ var tryToTransfer = function (rawTransfer, map) {
|
|
|
542
445
|
|
|
543
446
|
type = classof(value);
|
|
544
447
|
|
|
448
|
+
if (type === 'ArrayBuffer' ? setHas(buffers, value) : mapHas(map, value)) {
|
|
449
|
+
throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);
|
|
450
|
+
}
|
|
451
|
+
|
|
545
452
|
if (type === 'ArrayBuffer') {
|
|
546
|
-
|
|
453
|
+
setAdd(buffers, value);
|
|
547
454
|
continue;
|
|
548
455
|
}
|
|
549
456
|
|
|
550
|
-
if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);
|
|
551
|
-
|
|
552
457
|
if (PROPER_STRUCTURED_CLONE_TRANSFER) {
|
|
553
458
|
transferred = nativeStructuredClone(value, { transfer: [value] });
|
|
554
459
|
} else switch (type) {
|
|
@@ -587,25 +492,18 @@ var tryToTransfer = function (rawTransfer, map) {
|
|
|
587
492
|
return buffers;
|
|
588
493
|
};
|
|
589
494
|
|
|
590
|
-
var
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);
|
|
599
|
-
|
|
600
|
-
if (arrayBufferTransfer) {
|
|
601
|
-
transferred = arrayBufferTransfer(value, undefined, true);
|
|
495
|
+
var detachBuffers = function (buffers) {
|
|
496
|
+
setIterate(buffers, function (buffer) {
|
|
497
|
+
if (PROPER_STRUCTURED_CLONE_TRANSFER) {
|
|
498
|
+
nativeRestrictedStructuredClone(buffer, { transfer: [buffer] });
|
|
499
|
+
} else if (isCallable(buffer.transfer)) {
|
|
500
|
+
buffer.transfer();
|
|
501
|
+
} else if (detachTransferable) {
|
|
502
|
+
detachTransferable(buffer);
|
|
602
503
|
} else {
|
|
603
|
-
|
|
604
|
-
transferred = value.transfer();
|
|
504
|
+
throwUnpolyfillable('ArrayBuffer', TRANSFERRING);
|
|
605
505
|
}
|
|
606
|
-
|
|
607
|
-
mapSet(map, value, transferred);
|
|
608
|
-
}
|
|
506
|
+
});
|
|
609
507
|
};
|
|
610
508
|
|
|
611
509
|
// `structuredClone` method
|
|
@@ -614,24 +512,18 @@ $({ global: true, enumerable: true, sham: !PROPER_STRUCTURED_CLONE_TRANSFER, for
|
|
|
614
512
|
structuredClone: function structuredClone(value /* , { transfer } */) {
|
|
615
513
|
var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;
|
|
616
514
|
var transfer = options ? options.transfer : undefined;
|
|
617
|
-
var transferredBuffers = false;
|
|
618
515
|
var map, buffers;
|
|
619
516
|
|
|
620
517
|
if (transfer !== undefined) {
|
|
621
518
|
map = new Map();
|
|
622
519
|
buffers = tryToTransfer(transfer, map);
|
|
623
|
-
transferredBuffers = !!lengthOfArrayLike(buffers);
|
|
624
520
|
}
|
|
625
521
|
|
|
626
|
-
var clone = structuredCloneInternal(value, map
|
|
522
|
+
var clone = structuredCloneInternal(value, map);
|
|
627
523
|
|
|
628
|
-
// since of an issue with cloning views of transferred buffers, we a forced to
|
|
524
|
+
// since of an issue with cloning views of transferred buffers, we a forced to detach them later
|
|
629
525
|
// https://github.com/zloirock/core-js/issues/1265
|
|
630
|
-
if (
|
|
631
|
-
map = new Map();
|
|
632
|
-
tryToTransferBuffers(transfer, map);
|
|
633
|
-
clone = replacePlaceholders(clone, map);
|
|
634
|
-
}
|
|
526
|
+
if (buffers) detachBuffers(buffers);
|
|
635
527
|
|
|
636
528
|
return clone;
|
|
637
529
|
}
|