core-js 3.42.0 → 3.46.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.
- package/LICENSE +1 -1
- package/README.md +8 -8
- package/actual/array/from-async.js +2 -6
- package/actual/array/index.js +0 -2
- package/actual/async-disposable-stack/constructor.js +2 -6
- package/actual/async-disposable-stack/index.js +2 -6
- package/actual/async-iterator/async-dispose.js +1 -2
- package/actual/async-iterator/index.js +1 -2
- package/actual/disposable-stack/constructor.js +2 -5
- package/actual/disposable-stack/index.js +2 -5
- package/actual/error/is-error.js +2 -3
- package/actual/iterator/concat.js +21 -0
- package/actual/iterator/index.js +1 -0
- package/actual/map/get-or-insert-computed.js +6 -0
- package/actual/map/get-or-insert.js +6 -0
- package/actual/map/index.js +2 -0
- package/actual/math/index.js +0 -1
- package/actual/math/sum-precise.js +2 -3
- package/actual/suppressed-error.js +2 -4
- package/actual/symbol/async-dispose.js +2 -2
- package/actual/symbol/dispose.js +2 -2
- package/actual/typed-array/from-base64.js +3 -0
- package/actual/typed-array/from-hex.js +3 -0
- package/actual/typed-array/index.js +1 -1
- package/actual/typed-array/set-from-base64.js +3 -0
- package/actual/typed-array/set-from-hex.js +3 -0
- package/actual/typed-array/to-base64.js +3 -0
- package/actual/typed-array/to-hex.js +3 -0
- package/actual/weak-map/get-or-insert-computed.js +6 -0
- package/actual/weak-map/get-or-insert.js +6 -0
- package/actual/weak-map/index.js +2 -0
- package/es/array/from-async.js +9 -0
- package/es/array/index.js +2 -0
- package/es/async-disposable-stack/constructor.js +12 -0
- package/es/async-disposable-stack/index.js +12 -0
- package/es/async-iterator/async-dispose.js +4 -0
- package/es/async-iterator/index.js +4 -0
- package/es/disposable-stack/constructor.js +10 -0
- package/es/disposable-stack/index.js +10 -0
- package/es/error/index.js +1 -0
- package/es/error/is-error.js +6 -0
- package/es/index.js +16 -0
- package/es/iterator/dispose.js +2 -0
- package/es/iterator/flat-map.js +1 -0
- package/es/iterator/index.js +1 -0
- package/es/math/index.js +2 -0
- package/es/math/sum-precise.js +6 -0
- package/es/suppressed-error.js +7 -0
- package/es/symbol/async-dispose.js +5 -0
- package/es/symbol/dispose.js +5 -0
- package/es/symbol/index.js +2 -0
- package/es/typed-array/from-base64.js +2 -0
- package/es/typed-array/from-hex.js +2 -0
- package/es/typed-array/methods.js +6 -0
- package/es/typed-array/set-from-base64.js +2 -0
- package/es/typed-array/set-from-hex.js +2 -0
- package/es/typed-array/to-base64.js +2 -0
- package/es/typed-array/to-hex.js +2 -0
- package/features/instance/clamp.js +2 -0
- package/features/iterator/chunks.js +2 -0
- package/features/iterator/sliding.js +2 -0
- package/features/iterator/windows.js +2 -0
- package/features/iterator/zip-keyed.js +2 -0
- package/features/iterator/zip.js +2 -0
- package/features/number/clamp.js +2 -0
- package/features/number/virtual/clamp.js +2 -0
- package/full/index.js +22 -0
- package/full/instance/clamp.js +14 -0
- package/full/iterator/chunks.js +8 -0
- package/full/iterator/concat.js +5 -18
- package/full/iterator/from.js +3 -0
- package/full/iterator/index.js +5 -1
- package/full/iterator/range.js +19 -0
- package/full/iterator/sliding.js +8 -0
- package/full/iterator/windows.js +8 -0
- package/full/iterator/zip-keyed.js +27 -0
- package/full/iterator/zip.js +25 -0
- package/full/map/get-or-insert-computed.js +2 -4
- package/full/map/get-or-insert.js +2 -4
- package/full/math/clamp.js +1 -0
- package/full/math/index.js +1 -0
- package/full/number/clamp.js +5 -0
- package/full/number/index.js +1 -0
- package/full/number/virtual/clamp.js +5 -0
- package/full/weak-map/get-or-insert-computed.js +2 -4
- package/full/weak-map/get-or-insert.js +2 -4
- package/internals/array-to-reversed.js +2 -2
- package/internals/array-with.js +2 -2
- package/internals/async-iterator-iteration.js +6 -1
- package/internals/async-iterator-map.js +1 -1
- package/internals/error-stack-install.js +1 -0
- package/internals/flatten-into-array.js +1 -1
- package/internals/get-iterator-direct.js +1 -1
- package/internals/get-iterator-record.js +7 -0
- package/internals/get-mode-option.js +8 -0
- package/internals/install-error-cause.js +1 -1
- package/internals/iterate.js +1 -1
- package/internals/iterator-close-all.js +16 -0
- package/internals/iterator-create-proxy.js +11 -3
- package/internals/iterator-helper-throws-on-invalid-iterator.js +12 -0
- package/internals/iterator-window.js +50 -0
- package/internals/iterator-zip.js +100 -0
- package/internals/math-clamp.js +9 -0
- package/internals/regexp-flags-detection.js +47 -0
- package/internals/regexp-get-flags.js +8 -5
- package/internals/set-difference.js +2 -2
- package/internals/set-intersection.js +1 -1
- package/internals/set-is-disjoint-from.js +1 -1
- package/internals/set-is-subset-of.js +1 -1
- package/internals/set-is-superset-of.js +1 -1
- package/internals/set-method-get-keys-before-cloning-detection.js +30 -0
- package/internals/set-symmetric-difference.js +1 -1
- package/internals/set-union.js +1 -1
- package/internals/shared-store.js +3 -3
- package/internals/string-pad.js +0 -1
- package/internals/this-number-value.js +1 -1
- package/internals/uid.js +1 -1
- package/internals/uint8-from-base64.js +6 -5
- package/modules/es.array-buffer.transfer-to-fixed-length.js +1 -1
- package/modules/es.array-buffer.transfer.js +1 -1
- package/modules/es.array.from-async.js +22 -0
- package/modules/es.array.with.js +11 -1
- package/modules/es.async-disposable-stack.constructor.js +135 -0
- package/modules/es.async-iterator.async-dispose.js +26 -0
- package/modules/es.data-view.get-float16.js +1 -2
- package/modules/es.data-view.set-float16.js +6 -4
- package/modules/es.disposable-stack.constructor.js +114 -0
- package/modules/es.error.is-error.js +37 -0
- package/modules/es.escape.js +1 -1
- package/modules/es.iterator.dispose.js +17 -0
- package/modules/es.iterator.drop.js +7 -2
- package/modules/es.iterator.filter.js +7 -2
- package/modules/es.iterator.flat-map.js +8 -2
- package/modules/es.iterator.from.js +12 -1
- package/modules/es.iterator.map.js +7 -2
- package/modules/es.json.stringify.js +1 -1
- package/modules/es.math.sum-precise.js +151 -0
- package/modules/es.number.to-exponential.js +1 -1
- package/modules/es.number.to-fixed.js +1 -1
- package/modules/es.number.to-precision.js +1 -1
- package/modules/es.object.group-by.js +2 -1
- package/modules/es.promise.constructor.js +3 -0
- package/modules/es.regexp.flags.js +10 -50
- package/modules/es.set.difference.v2.js +25 -2
- package/modules/es.set.symmetric-difference.v2.js +4 -1
- package/modules/es.set.union.v2.js +4 -1
- package/modules/es.string.match.js +8 -2
- package/modules/es.string.replace.js +4 -2
- package/modules/es.suppressed-error.constructor.js +64 -0
- package/modules/es.symbol.async-dispose.js +21 -0
- package/modules/es.symbol.constructor.js +1 -1
- package/modules/es.symbol.dispose.js +21 -0
- package/modules/es.typed-array.with.js +12 -2
- package/modules/es.uint8-array.from-base64.js +29 -0
- package/modules/es.uint8-array.from-hex.js +13 -0
- package/modules/es.uint8-array.set-from-base64.js +37 -0
- package/modules/es.uint8-array.set-from-hex.js +19 -0
- package/modules/es.uint8-array.to-base64.js +60 -0
- package/modules/es.uint8-array.to-hex.js +34 -0
- package/modules/esnext.array.from-async.js +2 -21
- package/modules/esnext.array.last-index.js +1 -1
- package/modules/esnext.array.last-item.js +1 -1
- package/modules/esnext.async-disposable-stack.constructor.js +2 -134
- package/modules/esnext.async-iterator.async-dispose.js +2 -25
- package/modules/esnext.data-view.set-uint8-clamped.js +5 -3
- package/modules/esnext.disposable-stack.constructor.js +2 -113
- package/modules/esnext.error.is-error.js +2 -35
- package/modules/esnext.iterator.chunks.js +44 -0
- package/modules/esnext.iterator.concat.js +4 -5
- package/modules/esnext.iterator.dispose.js +2 -16
- package/modules/esnext.iterator.sliding.js +11 -0
- package/modules/esnext.iterator.windows.js +11 -0
- package/modules/esnext.iterator.zip-keyed.js +71 -0
- package/modules/esnext.iterator.zip.js +91 -0
- package/modules/esnext.map.get-or-insert-computed.js +2 -1
- package/modules/esnext.map.get-or-insert.js +2 -1
- package/modules/esnext.math.clamp.js +3 -14
- package/modules/esnext.math.sum-precise.js +2 -150
- package/modules/esnext.number.clamp.js +12 -0
- package/modules/esnext.number.from-string.js +1 -1
- package/modules/esnext.suppressed-error.constructor.js +2 -63
- package/modules/esnext.symbol.async-dispose.js +2 -20
- package/modules/esnext.symbol.dispose.js +2 -20
- package/modules/esnext.uint8-array.from-base64.js +2 -15
- package/modules/esnext.uint8-array.from-hex.js +2 -12
- package/modules/esnext.uint8-array.set-from-base64.js +2 -27
- package/modules/esnext.uint8-array.set-from-hex.js +2 -18
- package/modules/esnext.uint8-array.to-base64.js +2 -48
- package/modules/esnext.uint8-array.to-hex.js +2 -22
- package/modules/esnext.weak-map.get-or-insert-computed.js +13 -1
- package/modules/esnext.weak-map.get-or-insert.js +2 -1
- package/modules/web.structured-clone.js +1 -1
- package/modules/web.url.constructor.js +2 -1
- package/package.json +5 -1
- package/proposals/function-un-this.js +1 -1
- package/proposals/iterator-chunking-v2.js +4 -0
- package/proposals/iterator-chunking.js +5 -0
- package/proposals/joint-iteration.js +4 -0
- package/proposals/math-clamp-v2.js +3 -0
- package/proposals/math-clamp.js +1 -1
- package/proposals/string-cooked.js +1 -1
- package/stable/array/from-async.js +4 -0
- package/stable/async-disposable-stack/constructor.js +4 -0
- package/stable/async-disposable-stack/index.js +4 -0
- package/stable/async-iterator/async-dispose.js +2 -0
- package/stable/async-iterator/index.js +2 -0
- package/stable/disposable-stack/constructor.js +4 -0
- package/stable/disposable-stack/index.js +4 -0
- package/stable/error/is-error.js +4 -0
- package/stable/index.js +16 -0
- package/stable/iterator/dispose.js +4 -0
- package/stable/iterator/flat-map.js +1 -0
- package/stable/math/sum-precise.js +4 -0
- package/stable/suppressed-error.js +4 -0
- package/stable/symbol/async-dispose.js +4 -0
- package/stable/symbol/dispose.js +4 -0
- package/stable/typed-array/from-base64.js +4 -0
- package/stable/typed-array/from-hex.js +4 -0
- package/stable/typed-array/set-from-base64.js +4 -0
- package/stable/typed-array/set-from-hex.js +4 -0
- package/stable/typed-array/to-base64.js +4 -0
- package/stable/typed-array/to-hex.js +4 -0
- package/stage/1.js +2 -1
- package/stage/2.7.js +2 -2
- package/stage/2.js +1 -0
- package/stage/3.js +2 -5
- package/stage/4.js +5 -0
|
@@ -25,7 +25,6 @@ var getUint16 = uncurryThis(DataView.prototype.getUint16);
|
|
|
25
25
|
// https://tc39.es/ecma262/#sec-dataview.prototype.getfloat16
|
|
26
26
|
$({ target: 'DataView', proto: true }, {
|
|
27
27
|
getFloat16: function getFloat16(byteOffset /* , littleEndian */) {
|
|
28
|
-
|
|
29
|
-
return unpackFloat16(uint16);
|
|
28
|
+
return unpackFloat16(getUint16(this, byteOffset, arguments.length > 1 ? arguments[1] : false));
|
|
30
29
|
}
|
|
31
30
|
});
|
|
@@ -46,9 +46,11 @@ var setUint16 = uncurryThis(DataView.prototype.setUint16);
|
|
|
46
46
|
// https://tc39.es/ecma262/#sec-dataview.prototype.setfloat16
|
|
47
47
|
$({ target: 'DataView', proto: true }, {
|
|
48
48
|
setFloat16: function setFloat16(byteOffset, value /* , littleEndian */) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
setUint16(
|
|
50
|
+
aDataView(this),
|
|
51
|
+
toIndex(byteOffset),
|
|
52
|
+
packFloat16(+value),
|
|
53
|
+
arguments.length > 2 ? arguments[2] : false
|
|
54
|
+
);
|
|
53
55
|
}
|
|
54
56
|
});
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// https://github.com/tc39/proposal-explicit-resource-management
|
|
3
|
+
var $ = require('../internals/export');
|
|
4
|
+
var DESCRIPTORS = require('../internals/descriptors');
|
|
5
|
+
var getBuiltIn = require('../internals/get-built-in');
|
|
6
|
+
var aCallable = require('../internals/a-callable');
|
|
7
|
+
var anInstance = require('../internals/an-instance');
|
|
8
|
+
var defineBuiltIn = require('../internals/define-built-in');
|
|
9
|
+
var defineBuiltIns = require('../internals/define-built-ins');
|
|
10
|
+
var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
|
|
11
|
+
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
12
|
+
var InternalStateModule = require('../internals/internal-state');
|
|
13
|
+
var addDisposableResource = require('../internals/add-disposable-resource');
|
|
14
|
+
|
|
15
|
+
var SuppressedError = getBuiltIn('SuppressedError');
|
|
16
|
+
var $ReferenceError = ReferenceError;
|
|
17
|
+
|
|
18
|
+
var DISPOSE = wellKnownSymbol('dispose');
|
|
19
|
+
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
20
|
+
|
|
21
|
+
var DISPOSABLE_STACK = 'DisposableStack';
|
|
22
|
+
var setInternalState = InternalStateModule.set;
|
|
23
|
+
var getDisposableStackInternalState = InternalStateModule.getterFor(DISPOSABLE_STACK);
|
|
24
|
+
|
|
25
|
+
var HINT = 'sync-dispose';
|
|
26
|
+
var DISPOSED = 'disposed';
|
|
27
|
+
var PENDING = 'pending';
|
|
28
|
+
|
|
29
|
+
var getPendingDisposableStackInternalState = function (stack) {
|
|
30
|
+
var internalState = getDisposableStackInternalState(stack);
|
|
31
|
+
if (internalState.state === DISPOSED) throw new $ReferenceError(DISPOSABLE_STACK + ' already disposed');
|
|
32
|
+
return internalState;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var $DisposableStack = function DisposableStack() {
|
|
36
|
+
setInternalState(anInstance(this, DisposableStackPrototype), {
|
|
37
|
+
type: DISPOSABLE_STACK,
|
|
38
|
+
state: PENDING,
|
|
39
|
+
stack: []
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (!DESCRIPTORS) this.disposed = false;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var DisposableStackPrototype = $DisposableStack.prototype;
|
|
46
|
+
|
|
47
|
+
defineBuiltIns(DisposableStackPrototype, {
|
|
48
|
+
dispose: function dispose() {
|
|
49
|
+
var internalState = getDisposableStackInternalState(this);
|
|
50
|
+
if (internalState.state === DISPOSED) return;
|
|
51
|
+
internalState.state = DISPOSED;
|
|
52
|
+
if (!DESCRIPTORS) this.disposed = true;
|
|
53
|
+
var stack = internalState.stack;
|
|
54
|
+
var i = stack.length;
|
|
55
|
+
var thrown = false;
|
|
56
|
+
var suppressed;
|
|
57
|
+
while (i) {
|
|
58
|
+
var disposeMethod = stack[--i];
|
|
59
|
+
stack[i] = null;
|
|
60
|
+
try {
|
|
61
|
+
disposeMethod();
|
|
62
|
+
} catch (errorResult) {
|
|
63
|
+
if (thrown) {
|
|
64
|
+
suppressed = new SuppressedError(errorResult, suppressed);
|
|
65
|
+
} else {
|
|
66
|
+
thrown = true;
|
|
67
|
+
suppressed = errorResult;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
internalState.stack = null;
|
|
72
|
+
if (thrown) throw suppressed;
|
|
73
|
+
},
|
|
74
|
+
use: function use(value) {
|
|
75
|
+
addDisposableResource(getPendingDisposableStackInternalState(this), value, HINT);
|
|
76
|
+
return value;
|
|
77
|
+
},
|
|
78
|
+
adopt: function adopt(value, onDispose) {
|
|
79
|
+
var internalState = getPendingDisposableStackInternalState(this);
|
|
80
|
+
aCallable(onDispose);
|
|
81
|
+
addDisposableResource(internalState, undefined, HINT, function () {
|
|
82
|
+
onDispose(value);
|
|
83
|
+
});
|
|
84
|
+
return value;
|
|
85
|
+
},
|
|
86
|
+
defer: function defer(onDispose) {
|
|
87
|
+
var internalState = getPendingDisposableStackInternalState(this);
|
|
88
|
+
aCallable(onDispose);
|
|
89
|
+
addDisposableResource(internalState, undefined, HINT, onDispose);
|
|
90
|
+
},
|
|
91
|
+
move: function move() {
|
|
92
|
+
var internalState = getPendingDisposableStackInternalState(this);
|
|
93
|
+
var newDisposableStack = new $DisposableStack();
|
|
94
|
+
getDisposableStackInternalState(newDisposableStack).stack = internalState.stack;
|
|
95
|
+
internalState.stack = [];
|
|
96
|
+
internalState.state = DISPOSED;
|
|
97
|
+
if (!DESCRIPTORS) this.disposed = true;
|
|
98
|
+
return newDisposableStack;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
if (DESCRIPTORS) defineBuiltInAccessor(DisposableStackPrototype, 'disposed', {
|
|
103
|
+
configurable: true,
|
|
104
|
+
get: function disposed() {
|
|
105
|
+
return getDisposableStackInternalState(this).state === DISPOSED;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
defineBuiltIn(DisposableStackPrototype, DISPOSE, DisposableStackPrototype.dispose, { name: 'dispose' });
|
|
110
|
+
defineBuiltIn(DisposableStackPrototype, TO_STRING_TAG, DISPOSABLE_STACK, { nonWritable: true });
|
|
111
|
+
|
|
112
|
+
$({ global: true, constructor: true }, {
|
|
113
|
+
DisposableStack: $DisposableStack
|
|
114
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var getBuiltIn = require('../internals/get-built-in');
|
|
4
|
+
var isObject = require('../internals/is-object');
|
|
5
|
+
var classof = require('../internals/classof');
|
|
6
|
+
var fails = require('../internals/fails');
|
|
7
|
+
|
|
8
|
+
var ERROR = 'Error';
|
|
9
|
+
var DOM_EXCEPTION = 'DOMException';
|
|
10
|
+
// eslint-disable-next-line es/no-object-setprototypeof, no-proto -- safe
|
|
11
|
+
var PROTOTYPE_SETTING_AVAILABLE = Object.setPrototypeOf || ({}).__proto__;
|
|
12
|
+
|
|
13
|
+
var DOMException = getBuiltIn(DOM_EXCEPTION);
|
|
14
|
+
var $Error = Error;
|
|
15
|
+
// eslint-disable-next-line es/no-error-iserror -- safe
|
|
16
|
+
var $isError = $Error.isError;
|
|
17
|
+
|
|
18
|
+
var FORCED = !$isError || !PROTOTYPE_SETTING_AVAILABLE || fails(function () {
|
|
19
|
+
// Bun, isNativeError-based implementations, some buggy structuredClone-based implementations, etc.
|
|
20
|
+
// https://github.com/oven-sh/bun/issues/15821
|
|
21
|
+
return (DOMException && !$isError(new DOMException(DOM_EXCEPTION))) ||
|
|
22
|
+
// structuredClone-based implementations
|
|
23
|
+
// eslint-disable-next-line es/no-error-cause -- detection
|
|
24
|
+
!$isError(new $Error(ERROR, { cause: function () { /* empty */ } })) ||
|
|
25
|
+
// instanceof-based and FF Error#stack-based implementations
|
|
26
|
+
$isError(getBuiltIn('Object', 'create')($Error.prototype));
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// `Error.isError` method
|
|
30
|
+
// https://tc39.es/ecma262/#sec-error.iserror
|
|
31
|
+
$({ target: 'Error', stat: true, sham: true, forced: FORCED }, {
|
|
32
|
+
isError: function isError(arg) {
|
|
33
|
+
if (!isObject(arg)) return false;
|
|
34
|
+
var tag = classof(arg);
|
|
35
|
+
return tag === ERROR || tag === DOM_EXCEPTION;
|
|
36
|
+
}
|
|
37
|
+
});
|
package/modules/es.escape.js
CHANGED
|
@@ -6,7 +6,7 @@ var toString = require('../internals/to-string');
|
|
|
6
6
|
var charAt = uncurryThis(''.charAt);
|
|
7
7
|
var charCodeAt = uncurryThis(''.charCodeAt);
|
|
8
8
|
var exec = uncurryThis(/./.exec);
|
|
9
|
-
var numberToString = uncurryThis(1.
|
|
9
|
+
var numberToString = uncurryThis(1.1.toString);
|
|
10
10
|
var toUpperCase = uncurryThis(''.toUpperCase);
|
|
11
11
|
|
|
12
12
|
var raw = /[\w*+\-./@]/;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// https://github.com/tc39/proposal-explicit-resource-management
|
|
3
|
+
var call = require('../internals/function-call');
|
|
4
|
+
var defineBuiltIn = require('../internals/define-built-in');
|
|
5
|
+
var getMethod = require('../internals/get-method');
|
|
6
|
+
var hasOwn = require('../internals/has-own-property');
|
|
7
|
+
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
8
|
+
var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
|
|
9
|
+
|
|
10
|
+
var DISPOSE = wellKnownSymbol('dispose');
|
|
11
|
+
|
|
12
|
+
if (!hasOwn(IteratorPrototype, DISPOSE)) {
|
|
13
|
+
defineBuiltIn(IteratorPrototype, DISPOSE, function () {
|
|
14
|
+
var $return = getMethod(this, 'return');
|
|
15
|
+
if ($return) call($return, this);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -7,10 +7,15 @@ var notANaN = require('../internals/not-a-nan');
|
|
|
7
7
|
var toPositiveInteger = require('../internals/to-positive-integer');
|
|
8
8
|
var iteratorClose = require('../internals/iterator-close');
|
|
9
9
|
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
10
|
+
var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
|
|
10
11
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
11
12
|
var IS_PURE = require('../internals/is-pure');
|
|
12
13
|
|
|
13
|
-
var
|
|
14
|
+
var DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('drop', 0);
|
|
15
|
+
var dropWithoutClosingOnEarlyError = !IS_PURE && !DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
16
|
+
&& iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);
|
|
17
|
+
|
|
18
|
+
var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError;
|
|
14
19
|
|
|
15
20
|
var IteratorProxy = createIteratorProxy(function () {
|
|
16
21
|
var iterator = this.iterator;
|
|
@@ -29,7 +34,7 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
29
34
|
|
|
30
35
|
// `Iterator.prototype.drop` method
|
|
31
36
|
// https://tc39.es/ecma262/#sec-iterator.prototype.drop
|
|
32
|
-
$({ target: 'Iterator', proto: true, real: true, forced:
|
|
37
|
+
$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
33
38
|
drop: function drop(limit) {
|
|
34
39
|
anObject(this);
|
|
35
40
|
var remaining;
|
|
@@ -8,9 +8,14 @@ var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
|
8
8
|
var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
|
|
9
9
|
var IS_PURE = require('../internals/is-pure');
|
|
10
10
|
var iteratorClose = require('../internals/iterator-close');
|
|
11
|
+
var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
|
|
11
12
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
12
13
|
|
|
13
|
-
var
|
|
14
|
+
var FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('filter', function () { /* empty */ });
|
|
15
|
+
var filterWithoutClosingOnEarlyError = !IS_PURE && !FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
16
|
+
&& iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);
|
|
17
|
+
|
|
18
|
+
var FORCED = IS_PURE || FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR || filterWithoutClosingOnEarlyError;
|
|
14
19
|
|
|
15
20
|
var IteratorProxy = createIteratorProxy(function () {
|
|
16
21
|
var iterator = this.iterator;
|
|
@@ -28,7 +33,7 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
28
33
|
|
|
29
34
|
// `Iterator.prototype.filter` method
|
|
30
35
|
// https://tc39.es/ecma262/#sec-iterator.prototype.filter
|
|
31
|
-
$({ target: 'Iterator', proto: true, real: true, forced:
|
|
36
|
+
$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
32
37
|
filter: function filter(predicate) {
|
|
33
38
|
anObject(this);
|
|
34
39
|
try {
|
|
@@ -8,9 +8,15 @@ 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
10
|
var IS_PURE = require('../internals/is-pure');
|
|
11
|
+
var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
|
|
11
12
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
12
13
|
|
|
13
|
-
var
|
|
14
|
+
var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE
|
|
15
|
+
&& !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });
|
|
16
|
+
var flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
17
|
+
&& iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);
|
|
18
|
+
|
|
19
|
+
var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError;
|
|
14
20
|
|
|
15
21
|
var IteratorProxy = createIteratorProxy(function () {
|
|
16
22
|
var iterator = this.iterator;
|
|
@@ -36,7 +42,7 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
36
42
|
|
|
37
43
|
// `Iterator.prototype.flatMap` method
|
|
38
44
|
// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap
|
|
39
|
-
$({ target: 'Iterator', proto: true, real: true, forced:
|
|
45
|
+
$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
40
46
|
flatMap: function flatMap(mapper) {
|
|
41
47
|
anObject(this);
|
|
42
48
|
try {
|
|
@@ -8,13 +8,24 @@ var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
|
8
8
|
var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
|
|
9
9
|
var IS_PURE = require('../internals/is-pure');
|
|
10
10
|
|
|
11
|
+
var FORCED = IS_PURE || function () {
|
|
12
|
+
// Should not throw when an underlying iterator's `return` method is null
|
|
13
|
+
// https://bugs.webkit.org/show_bug.cgi?id=288714
|
|
14
|
+
try {
|
|
15
|
+
// eslint-disable-next-line es/no-iterator -- required for testing
|
|
16
|
+
Iterator.from({ 'return': null })['return']();
|
|
17
|
+
} catch (error) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}();
|
|
21
|
+
|
|
11
22
|
var IteratorProxy = createIteratorProxy(function () {
|
|
12
23
|
return call(this.next, this.iterator);
|
|
13
24
|
}, true);
|
|
14
25
|
|
|
15
26
|
// `Iterator.from` method
|
|
16
27
|
// https://tc39.es/ecma262/#sec-iterator.from
|
|
17
|
-
$({ target: 'Iterator', stat: true, forced:
|
|
28
|
+
$({ target: 'Iterator', stat: true, forced: FORCED }, {
|
|
18
29
|
from: function from(O) {
|
|
19
30
|
var iteratorRecord = getIteratorFlattenable(typeof O == 'string' ? toObject(O) : O, true);
|
|
20
31
|
return isPrototypeOf(IteratorPrototype, iteratorRecord.iterator)
|
|
@@ -7,10 +7,15 @@ var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
|
7
7
|
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
8
8
|
var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
|
|
9
9
|
var iteratorClose = require('../internals/iterator-close');
|
|
10
|
+
var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
|
|
10
11
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
11
12
|
var IS_PURE = require('../internals/is-pure');
|
|
12
13
|
|
|
13
|
-
var
|
|
14
|
+
var MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('map', function () { /* empty */ });
|
|
15
|
+
var mapWithoutClosingOnEarlyError = !IS_PURE && !MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
16
|
+
&& iteratorHelperWithoutClosingOnEarlyError('map', TypeError);
|
|
17
|
+
|
|
18
|
+
var FORCED = IS_PURE || MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || mapWithoutClosingOnEarlyError;
|
|
14
19
|
|
|
15
20
|
var IteratorProxy = createIteratorProxy(function () {
|
|
16
21
|
var iterator = this.iterator;
|
|
@@ -21,7 +26,7 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
21
26
|
|
|
22
27
|
// `Iterator.prototype.map` method
|
|
23
28
|
// https://tc39.es/ecma262/#sec-iterator.prototype.map
|
|
24
|
-
$({ target: 'Iterator', proto: true, real: true, forced:
|
|
29
|
+
$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
25
30
|
map: function map(mapper) {
|
|
26
31
|
anObject(this);
|
|
27
32
|
try {
|
|
@@ -17,7 +17,7 @@ var exec = uncurryThis(/./.exec);
|
|
|
17
17
|
var charAt = uncurryThis(''.charAt);
|
|
18
18
|
var charCodeAt = uncurryThis(''.charCodeAt);
|
|
19
19
|
var replace = uncurryThis(''.replace);
|
|
20
|
-
var numberToString = uncurryThis(1.
|
|
20
|
+
var numberToString = uncurryThis(1.1.toString);
|
|
21
21
|
|
|
22
22
|
var tester = /[\uD800-\uDFFF]/g;
|
|
23
23
|
var low = /^[\uD800-\uDBFF]$/;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// based on Shewchuk's algorithm for exactly floating point addition
|
|
3
|
+
// adapted from https://github.com/tc39/proposal-math-sum/blob/3513d58323a1ae25560e8700aa5294500c6c9287/polyfill/polyfill.mjs
|
|
4
|
+
var $ = require('../internals/export');
|
|
5
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
6
|
+
var iterate = require('../internals/iterate');
|
|
7
|
+
|
|
8
|
+
var $RangeError = RangeError;
|
|
9
|
+
var $TypeError = TypeError;
|
|
10
|
+
var $Infinity = Infinity;
|
|
11
|
+
var $NaN = NaN;
|
|
12
|
+
var abs = Math.abs;
|
|
13
|
+
var pow = Math.pow;
|
|
14
|
+
var push = uncurryThis([].push);
|
|
15
|
+
|
|
16
|
+
var POW_2_1023 = pow(2, 1023);
|
|
17
|
+
var MAX_SAFE_INTEGER = pow(2, 53) - 1; // 2 ** 53 - 1 === 9007199254740992
|
|
18
|
+
var MAX_DOUBLE = Number.MAX_VALUE; // 2 ** 1024 - 2 ** (1023 - 52) === 1.79769313486231570815e+308
|
|
19
|
+
var MAX_ULP = pow(2, 971); // 2 ** (1023 - 52) === 1.99584030953471981166e+292
|
|
20
|
+
|
|
21
|
+
var NOT_A_NUMBER = {};
|
|
22
|
+
var MINUS_INFINITY = {};
|
|
23
|
+
var PLUS_INFINITY = {};
|
|
24
|
+
var MINUS_ZERO = {};
|
|
25
|
+
var FINITE = {};
|
|
26
|
+
|
|
27
|
+
// prerequisite: abs(x) >= abs(y)
|
|
28
|
+
var twosum = function (x, y) {
|
|
29
|
+
var hi = x + y;
|
|
30
|
+
var lo = y - (hi - x);
|
|
31
|
+
return { hi: hi, lo: lo };
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// `Math.sumPrecise` method
|
|
35
|
+
// https://github.com/tc39/proposal-math-sum
|
|
36
|
+
$({ target: 'Math', stat: true }, {
|
|
37
|
+
// eslint-disable-next-line max-statements -- ok
|
|
38
|
+
sumPrecise: function sumPrecise(items) {
|
|
39
|
+
var numbers = [];
|
|
40
|
+
var count = 0;
|
|
41
|
+
var state = MINUS_ZERO;
|
|
42
|
+
|
|
43
|
+
iterate(items, function (n) {
|
|
44
|
+
if (++count >= MAX_SAFE_INTEGER) throw new $RangeError('Maximum allowed index exceeded');
|
|
45
|
+
if (typeof n != 'number') throw new $TypeError('Value is not a number');
|
|
46
|
+
if (state !== NOT_A_NUMBER) {
|
|
47
|
+
// eslint-disable-next-line no-self-compare -- NaN check
|
|
48
|
+
if (n !== n) state = NOT_A_NUMBER;
|
|
49
|
+
else if (n === $Infinity) state = state === MINUS_INFINITY ? NOT_A_NUMBER : PLUS_INFINITY;
|
|
50
|
+
else if (n === -$Infinity) state = state === PLUS_INFINITY ? NOT_A_NUMBER : MINUS_INFINITY;
|
|
51
|
+
else if ((n !== 0 || (1 / n) === $Infinity) && (state === MINUS_ZERO || state === FINITE)) {
|
|
52
|
+
state = FINITE;
|
|
53
|
+
push(numbers, n);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
switch (state) {
|
|
59
|
+
case NOT_A_NUMBER: return $NaN;
|
|
60
|
+
case MINUS_INFINITY: return -$Infinity;
|
|
61
|
+
case PLUS_INFINITY: return $Infinity;
|
|
62
|
+
case MINUS_ZERO: return -0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
var partials = [];
|
|
66
|
+
var overflow = 0; // conceptually 2 ** 1024 times this value; the final partial is biased by this amount
|
|
67
|
+
var x, y, sum, hi, lo, tmp;
|
|
68
|
+
|
|
69
|
+
for (var i = 0; i < numbers.length; i++) {
|
|
70
|
+
x = numbers[i];
|
|
71
|
+
var actuallyUsedPartials = 0;
|
|
72
|
+
for (var j = 0; j < partials.length; j++) {
|
|
73
|
+
y = partials[j];
|
|
74
|
+
if (abs(x) < abs(y)) {
|
|
75
|
+
tmp = x;
|
|
76
|
+
x = y;
|
|
77
|
+
y = tmp;
|
|
78
|
+
}
|
|
79
|
+
sum = twosum(x, y);
|
|
80
|
+
hi = sum.hi;
|
|
81
|
+
lo = sum.lo;
|
|
82
|
+
if (abs(hi) === $Infinity) {
|
|
83
|
+
var sign = hi === $Infinity ? 1 : -1;
|
|
84
|
+
overflow += sign;
|
|
85
|
+
|
|
86
|
+
x = (x - (sign * POW_2_1023)) - (sign * POW_2_1023);
|
|
87
|
+
if (abs(x) < abs(y)) {
|
|
88
|
+
tmp = x;
|
|
89
|
+
x = y;
|
|
90
|
+
y = tmp;
|
|
91
|
+
}
|
|
92
|
+
sum = twosum(x, y);
|
|
93
|
+
hi = sum.hi;
|
|
94
|
+
lo = sum.lo;
|
|
95
|
+
}
|
|
96
|
+
if (lo !== 0) partials[actuallyUsedPartials++] = lo;
|
|
97
|
+
x = hi;
|
|
98
|
+
}
|
|
99
|
+
partials.length = actuallyUsedPartials;
|
|
100
|
+
if (x !== 0) push(partials, x);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// compute the exact sum of partials, stopping once we lose precision
|
|
104
|
+
var n = partials.length - 1;
|
|
105
|
+
hi = 0;
|
|
106
|
+
lo = 0;
|
|
107
|
+
|
|
108
|
+
if (overflow !== 0) {
|
|
109
|
+
var next = n >= 0 ? partials[n] : 0;
|
|
110
|
+
n--;
|
|
111
|
+
if (abs(overflow) > 1 || (overflow > 0 && next > 0) || (overflow < 0 && next < 0)) {
|
|
112
|
+
return overflow > 0 ? $Infinity : -$Infinity;
|
|
113
|
+
}
|
|
114
|
+
// here we actually have to do the arithmetic
|
|
115
|
+
// drop a factor of 2 so we can do it without overflow
|
|
116
|
+
// assert(abs(overflow) === 1)
|
|
117
|
+
sum = twosum(overflow * POW_2_1023, next / 2);
|
|
118
|
+
hi = sum.hi;
|
|
119
|
+
lo = sum.lo;
|
|
120
|
+
lo *= 2;
|
|
121
|
+
if (abs(2 * hi) === $Infinity) {
|
|
122
|
+
// rounding to the maximum value
|
|
123
|
+
if (hi > 0) {
|
|
124
|
+
return (hi === POW_2_1023 && lo === -(MAX_ULP / 2) && n >= 0 && partials[n] < 0) ? MAX_DOUBLE : $Infinity;
|
|
125
|
+
} return (hi === -POW_2_1023 && lo === (MAX_ULP / 2) && n >= 0 && partials[n] > 0) ? -MAX_DOUBLE : -$Infinity;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (lo !== 0) {
|
|
129
|
+
partials[++n] = lo;
|
|
130
|
+
lo = 0;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
hi *= 2;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
while (n >= 0) {
|
|
137
|
+
sum = twosum(hi, partials[n--]);
|
|
138
|
+
hi = sum.hi;
|
|
139
|
+
lo = sum.lo;
|
|
140
|
+
if (lo !== 0) break;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (n >= 0 && ((lo < 0 && partials[n] < 0) || (lo > 0 && partials[n] > 0))) {
|
|
144
|
+
y = lo * 2;
|
|
145
|
+
x = hi + y;
|
|
146
|
+
if (y === x - hi) hi = x;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return hi;
|
|
150
|
+
}
|
|
151
|
+
});
|
|
@@ -14,7 +14,7 @@ var abs = Math.abs;
|
|
|
14
14
|
var floor = Math.floor;
|
|
15
15
|
var pow = Math.pow;
|
|
16
16
|
var round = Math.round;
|
|
17
|
-
var nativeToExponential = uncurryThis(1.
|
|
17
|
+
var nativeToExponential = uncurryThis(1.1.toExponential);
|
|
18
18
|
var repeat = uncurryThis($repeat);
|
|
19
19
|
var stringSlice = uncurryThis(''.slice);
|
|
20
20
|
|
|
@@ -11,7 +11,7 @@ var $String = String;
|
|
|
11
11
|
var floor = Math.floor;
|
|
12
12
|
var repeat = uncurryThis($repeat);
|
|
13
13
|
var stringSlice = uncurryThis(''.slice);
|
|
14
|
-
var nativeToFixed = uncurryThis(1.
|
|
14
|
+
var nativeToFixed = uncurryThis(1.1.toFixed);
|
|
15
15
|
|
|
16
16
|
var pow = function (x, n, acc) {
|
|
17
17
|
return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
|
|
@@ -4,7 +4,7 @@ var uncurryThis = require('../internals/function-uncurry-this');
|
|
|
4
4
|
var fails = require('../internals/fails');
|
|
5
5
|
var thisNumberValue = require('../internals/this-number-value');
|
|
6
6
|
|
|
7
|
-
var nativeToPrecision = uncurryThis(1.
|
|
7
|
+
var nativeToPrecision = uncurryThis(1.1.toPrecision);
|
|
8
8
|
|
|
9
9
|
var FORCED = fails(function () {
|
|
10
10
|
// IE7-
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
+
var createProperty = require('../internals/create-property');
|
|
3
4
|
var getBuiltIn = require('../internals/get-built-in');
|
|
4
5
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
5
6
|
var aCallable = require('../internals/a-callable');
|
|
@@ -33,7 +34,7 @@ $({ target: 'Object', stat: true, forced: DOES_NOT_WORK_WITH_PRIMITIVES }, {
|
|
|
33
34
|
// in some IE versions, `hasOwnProperty` returns incorrect result on integer keys
|
|
34
35
|
// but since it's a `null` prototype object, we can safely use `in`
|
|
35
36
|
if (key in obj) push(obj[key], value);
|
|
36
|
-
else obj
|
|
37
|
+
else createProperty(obj, key, [value]);
|
|
37
38
|
});
|
|
38
39
|
return obj;
|
|
39
40
|
}
|
|
@@ -3,6 +3,7 @@ var $ = require('../internals/export');
|
|
|
3
3
|
var IS_PURE = require('../internals/is-pure');
|
|
4
4
|
var IS_NODE = require('../internals/environment-is-node');
|
|
5
5
|
var globalThis = require('../internals/global-this');
|
|
6
|
+
var path = require('../internals/path');
|
|
6
7
|
var call = require('../internals/function-call');
|
|
7
8
|
var defineBuiltIn = require('../internals/define-built-in');
|
|
8
9
|
var setPrototypeOf = require('../internals/object-set-prototype-of');
|
|
@@ -286,5 +287,7 @@ $({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUC
|
|
|
286
287
|
Promise: PromiseConstructor
|
|
287
288
|
});
|
|
288
289
|
|
|
290
|
+
PromiseWrapper = path.Promise;
|
|
291
|
+
|
|
289
292
|
setToStringTag(PromiseConstructor, PROMISE, false, true);
|
|
290
293
|
setSpecies(PROMISE);
|
|
@@ -1,56 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var globalThis = require('../internals/global-this');
|
|
3
2
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
4
3
|
var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError
|
|
9
|
-
var RegExp = globalThis.RegExp;
|
|
10
|
-
var RegExpPrototype = RegExp.prototype;
|
|
11
|
-
|
|
12
|
-
var FORCED = DESCRIPTORS && fails(function () {
|
|
13
|
-
var INDICES_SUPPORT = true;
|
|
14
|
-
try {
|
|
15
|
-
RegExp('.', 'd');
|
|
16
|
-
} catch (error) {
|
|
17
|
-
INDICES_SUPPORT = false;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
var O = {};
|
|
21
|
-
// modern V8 bug
|
|
22
|
-
var calls = '';
|
|
23
|
-
var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';
|
|
24
|
-
|
|
25
|
-
var addGetter = function (key, chr) {
|
|
26
|
-
// eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
27
|
-
Object.defineProperty(O, key, { get: function () {
|
|
28
|
-
calls += chr;
|
|
29
|
-
return true;
|
|
30
|
-
} });
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
var pairs = {
|
|
34
|
-
dotAll: 's',
|
|
35
|
-
global: 'g',
|
|
36
|
-
ignoreCase: 'i',
|
|
37
|
-
multiline: 'm',
|
|
38
|
-
sticky: 'y'
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
if (INDICES_SUPPORT) pairs.hasIndices = 'd';
|
|
42
|
-
|
|
43
|
-
for (var key in pairs) addGetter(key, pairs[key]);
|
|
44
|
-
|
|
45
|
-
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
46
|
-
var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);
|
|
47
|
-
|
|
48
|
-
return result !== expected || calls !== expected;
|
|
49
|
-
});
|
|
4
|
+
var regExpFlagsDetection = require('../internals/regexp-flags-detection');
|
|
5
|
+
var regExpFlagsGetterImplementation = require('../internals/regexp-flags');
|
|
50
6
|
|
|
51
7
|
// `RegExp.prototype.flags` getter
|
|
52
8
|
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
9
|
+
if (DESCRIPTORS && !regExpFlagsDetection.correct) {
|
|
10
|
+
defineBuiltInAccessor(RegExp.prototype, 'flags', {
|
|
11
|
+
configurable: true,
|
|
12
|
+
get: regExpFlagsGetterImplementation
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
regExpFlagsDetection.correct = true;
|
|
16
|
+
}
|