es-abstract
Advanced tools
Comparing version 1.22.5 to 1.23.0
@@ -9,2 +9,3 @@ 'use strict'; | ||
var isTypedArray = require('is-typed-array'); | ||
var typedArrayBuffer = require('typed-array-buffer'); | ||
@@ -15,3 +16,6 @@ | ||
module.exports = function IsValidIntegerIndex(O, index) { | ||
// Assert: O is an Integer-Indexed exotic object. | ||
if (!isTypedArray) { | ||
throw new $TypeError('Assertion failed: `O` must be a Typed Array'); | ||
} | ||
typedArrayBuffer(O); // step 1 | ||
@@ -18,0 +22,0 @@ |
@@ -8,3 +8,2 @@ 'use strict'; | ||
var typedArrayBuffer = require('typed-array-buffer'); | ||
var typedArrayByteOffset = require('typed-array-byte-offset'); | ||
var typedArrayLength = require('typed-array-length'); | ||
@@ -16,14 +15,9 @@ var whichTypedArray = require('which-typed-array'); | ||
var Get = require('./Get'); | ||
var IsBigIntElementType = require('./IsBigIntElementType'); | ||
var IntegerIndexedElementSet = require('./IntegerIndexedElementSet'); | ||
var IsDetachedBuffer = require('./IsDetachedBuffer'); | ||
var LengthOfArrayLike = require('./LengthOfArrayLike'); | ||
var SetValueInBuffer = require('./SetValueInBuffer'); | ||
var ToBigInt = require('./ToBigInt'); | ||
var ToNumber = require('./ToNumber'); | ||
var ToObject = require('./ToObject'); | ||
var ToString = require('./ToString'); | ||
var TypedArrayElementSize = require('./TypedArrayElementSize'); | ||
var TypedArrayElementType = require('./TypedArrayElementType'); | ||
// https://262.ecma-international.org/13.0/#sec-settypedarrayfromarraylike | ||
// https://262.ecma-international.org/14.0/#sec-settypedarrayfromarraylike | ||
@@ -52,47 +46,27 @@ module.exports = function SetTypedArrayFromArrayLike(target, targetOffset, source) { | ||
var targetElementSize = TypedArrayElementSize(target); // step 4 | ||
var src = ToObject(source); // step 4 | ||
var targetType = TypedArrayElementType(target); // step 5 | ||
var srcLength = LengthOfArrayLike(src); // step 5 | ||
var targetByteOffset = typedArrayByteOffset(target); // step 6 | ||
var src = ToObject(source); // step 7 | ||
var srcLength = LengthOfArrayLike(src); // step 8 | ||
if (targetOffset === Infinity) { | ||
throw new $RangeError('targetOffset must be a finite integer'); // step 9 | ||
throw new $RangeError('targetOffset must be a finite integer'); // step 6 | ||
} | ||
if (srcLength + targetOffset > targetLength) { | ||
throw new $RangeError('targetOffset + srcLength must be <= target.length'); // step 10 | ||
throw new $RangeError('targetOffset + srcLength must be <= target.length'); // step 7 | ||
} | ||
var targetByteIndex = (targetOffset * targetElementSize) + targetByteOffset; // step 11 | ||
var k = 0; // step 8 | ||
var k = 0; // step 12 | ||
while (k < srcLength) { // step 9 | ||
var Pk = ToString(k); // step 9.a | ||
var limit = targetByteIndex + (targetElementSize * srcLength); // step 13 | ||
var value = Get(src, Pk); // step 9.b | ||
while (targetByteIndex < limit) { // step 14 | ||
var Pk = ToString(k); // step 14.a | ||
var targetIndex = targetOffset + k; // step 9.c | ||
var value = Get(src, Pk); // step 14.b | ||
IntegerIndexedElementSet(target, targetIndex, value); // step 9.d | ||
if (IsBigIntElementType(targetType)) { | ||
value = ToBigInt(value); // step 14.c | ||
} else { | ||
value = ToNumber(value); // step 14.d | ||
} | ||
if (IsDetachedBuffer(targetBuffer)) { | ||
throw new $TypeError('target’s buffer is detached'); // step 14.e | ||
} | ||
SetValueInBuffer(targetBuffer, targetByteIndex, targetType, value, true, 'Unordered'); // step 14.f | ||
k += 1; // step 14.g | ||
targetByteIndex += targetElementSize; // step 14.h | ||
k += 1; // step 9.e | ||
} | ||
}; |
'use strict'; | ||
var GetIntrinsic = require('get-intrinsic'); | ||
var $RangeError = require('es-errors/range'); | ||
var $SyntaxError = require('es-errors/syntax'); | ||
var $TypeError = require('es-errors/type'); | ||
var $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true); | ||
@@ -27,3 +24,3 @@ var typedArrayBuffer = require('typed-array-buffer'); | ||
// https://262.ecma-international.org/13.0/#sec-settypedarrayfromtypedarray | ||
// https://262.ecma-international.org/14.0/#sec-settypedarrayfromtypedarray | ||
@@ -87,51 +84,47 @@ module.exports = function SetTypedArrayFromTypedArray(target, targetOffset, source) { | ||
var same; | ||
var sameSharedArrayBuffer = false; | ||
if (IsSharedArrayBuffer(srcBuffer) && IsSharedArrayBuffer(targetBuffer)) { // step 16 | ||
// a. If srcBuffer.[[ArrayBufferData]] and targetBuffer.[[ArrayBufferData]] are the same Shared Data Block values, let same be true; else let same be false. | ||
throw new $SyntaxError('SharedArrayBuffer is not supported by this implementation'); | ||
} else { | ||
same = SameValue(srcBuffer, targetBuffer); // step 17 | ||
} | ||
var srcByteIndex; | ||
if (same) { // step 18 | ||
var srcByteLength = typedArrayByteLength(source); // step 18.a | ||
if (SameValue(srcBuffer, targetBuffer) || sameSharedArrayBuffer) { // step 17 | ||
var srcByteLength = typedArrayByteLength(source); // step 17.a | ||
srcBuffer = CloneArrayBuffer(srcBuffer, srcByteOffset, srcByteLength, $ArrayBuffer); // step 18.b | ||
srcBuffer = CloneArrayBuffer(srcBuffer, srcByteOffset, srcByteLength); // step 17.b | ||
// c. NOTE: %ArrayBuffer% is used to clone srcBuffer because is it known to not have any observable side-effects. | ||
srcByteIndex = 0; // step 18.d | ||
srcByteIndex = 0; // step 17.c | ||
} else { | ||
srcByteIndex = srcByteOffset; // step 19 | ||
srcByteIndex = srcByteOffset; // step 18 | ||
} | ||
var targetByteIndex = (targetOffset * targetElementSize) + targetByteOffset; // step 20 | ||
var targetByteIndex = (targetOffset * targetElementSize) + targetByteOffset; // step 19 | ||
var limit = targetByteIndex + (targetElementSize * srcLength); // step 21 | ||
var limit = targetByteIndex + (targetElementSize * srcLength); // step 20 | ||
var value; | ||
if (srcType === targetType) { // step 22 | ||
// a. NOTE: If srcType and targetType are the same, the transfer must be performed in a manner that preserves the bit-level encoding of the source data. | ||
if (srcType === targetType) { // step 21 | ||
// a. NOTE: The transfer must be performed in a manner that preserves the bit-level encoding of the source data. | ||
while (targetByteIndex < limit) { // step 22.b | ||
value = GetValueFromBuffer(srcBuffer, srcByteIndex, 'Uint8', true, 'Unordered'); // step 22.b.i | ||
while (targetByteIndex < limit) { // step 21.b | ||
value = GetValueFromBuffer(srcBuffer, srcByteIndex, 'Uint8', true, 'Unordered'); // step 21.b.i | ||
SetValueInBuffer(targetBuffer, targetByteIndex, 'Uint8', value, true, 'Unordered'); // step 22.b.ii | ||
SetValueInBuffer(targetBuffer, targetByteIndex, 'Uint8', value, true, 'Unordered'); // step 21.b.ii | ||
srcByteIndex += 1; // step 22.b.iii | ||
srcByteIndex += 1; // step 21.b.iii | ||
targetByteIndex += 1; // step 22.b.iv | ||
targetByteIndex += 1; // step 21.b.iv | ||
} | ||
} else { // step 23 | ||
while (targetByteIndex < limit) { // step 23.a | ||
value = GetValueFromBuffer(srcBuffer, srcByteIndex, srcType, true, 'Unordered'); // step 23.a.i | ||
} else { // step 22 | ||
while (targetByteIndex < limit) { // step 22.a | ||
value = GetValueFromBuffer(srcBuffer, srcByteIndex, srcType, true, 'Unordered'); // step 22.a.i | ||
SetValueInBuffer(targetBuffer, targetByteIndex, targetType, value, true, 'Unordered'); // step 23.a.ii | ||
SetValueInBuffer(targetBuffer, targetByteIndex, targetType, value, true, 'Unordered'); // step 22.a.ii | ||
srcByteIndex += srcElementSize; // step 23.a.iii | ||
srcByteIndex += srcElementSize; // step 22.a.iii | ||
targetByteIndex += targetElementSize; // step 23.a.iv | ||
targetByteIndex += targetElementSize; // step 22.a.iv | ||
} | ||
} | ||
}; |
@@ -0,1 +1,13 @@ | ||
1.23.0 / 2024-03-04 | ||
================= | ||
* [New] add `ES2024` | ||
* [New] `ES2015`+: add `InternalizeJSONProperty` | ||
* [New] `ES2015`+: add `IntegerIndexedElement{Get,Set}` | ||
* [New] `ES2018`+: add `TimeZoneString` | ||
* [New] `ES2022`+: add `DefineMethodProperty` | ||
* [New] `ES2023`: add `DefaultTimeZone` | ||
* [Fix] `ES2023`+: `SetTypedArrayFrom{TypedArray,ArrayLike}`: match engine reality | ||
* [Fix] `ES2024`+: `GetViewByteLength`, `IsViewOutOfBounds`: support engines with only own DV properties | ||
* [Tests] use `safe-bigint` | ||
1.22.5 / 2024-02-28 | ||
@@ -2,0 +14,0 @@ ================= |
@@ -51,2 +51,5 @@ 'use strict'; | ||
InstanceofOperator: require('./2015/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2015/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2015/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2015/InternalizeJSONProperty'), | ||
Invoke: require('./2015/Invoke'), | ||
@@ -53,0 +56,0 @@ IsAccessorDescriptor: require('./2015/IsAccessorDescriptor'), |
@@ -51,2 +51,5 @@ 'use strict'; | ||
InstanceofOperator: require('./2016/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2016/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2016/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2016/InternalizeJSONProperty'), | ||
Invoke: require('./2016/Invoke'), | ||
@@ -53,0 +56,0 @@ IsAccessorDescriptor: require('./2016/IsAccessorDescriptor'), |
@@ -51,2 +51,5 @@ 'use strict'; | ||
InstanceofOperator: require('./2017/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2017/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2017/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2017/InternalizeJSONProperty'), | ||
Invoke: require('./2017/Invoke'), | ||
@@ -53,0 +56,0 @@ IsAccessorDescriptor: require('./2017/IsAccessorDescriptor'), |
@@ -55,2 +55,5 @@ 'use strict'; | ||
InstanceofOperator: require('./2018/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2018/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2018/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2018/InternalizeJSONProperty'), | ||
Invoke: require('./2018/Invoke'), | ||
@@ -134,2 +137,3 @@ IsAccessorDescriptor: require('./2018/IsAccessorDescriptor'), | ||
TimeWithinDay: require('./2018/TimeWithinDay'), | ||
TimeZoneString: require('./2018/TimeZoneString'), | ||
ToBoolean: require('./2018/ToBoolean'), | ||
@@ -136,0 +140,0 @@ ToDateString: require('./2018/ToDateString'), |
@@ -58,2 +58,5 @@ 'use strict'; | ||
InstanceofOperator: require('./2019/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2019/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2019/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2019/InternalizeJSONProperty'), | ||
Invoke: require('./2019/Invoke'), | ||
@@ -137,2 +140,3 @@ IsAccessorDescriptor: require('./2019/IsAccessorDescriptor'), | ||
TimeWithinDay: require('./2019/TimeWithinDay'), | ||
TimeZoneString: require('./2019/TimeZoneString'), | ||
ToBoolean: require('./2019/ToBoolean'), | ||
@@ -139,0 +143,0 @@ ToDateString: require('./2019/ToDateString'), |
@@ -65,2 +65,5 @@ 'use strict'; | ||
InstanceofOperator: require('./2020/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2020/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2020/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2020/InternalizeJSONProperty'), | ||
Invoke: require('./2020/Invoke'), | ||
@@ -156,2 +159,3 @@ IsAccessorDescriptor: require('./2020/IsAccessorDescriptor'), | ||
TimeWithinDay: require('./2020/TimeWithinDay'), | ||
TimeZoneString: require('./2020/TimeZoneString'), | ||
ToBigInt: require('./2020/ToBigInt'), | ||
@@ -158,0 +162,0 @@ ToBigInt64: require('./2020/ToBigInt64'), |
@@ -74,2 +74,5 @@ 'use strict'; | ||
InstanceofOperator: require('./2021/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2021/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2021/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2021/InternalizeJSONProperty'), | ||
Invoke: require('./2021/Invoke'), | ||
@@ -169,2 +172,3 @@ IsAccessorDescriptor: require('./2021/IsAccessorDescriptor'), | ||
TimeWithinDay: require('./2021/TimeWithinDay'), | ||
TimeZoneString: require('./2021/TimeZoneString'), | ||
ToBigInt: require('./2021/ToBigInt'), | ||
@@ -171,0 +175,0 @@ ToBigInt64: require('./2021/ToBigInt64'), |
@@ -50,2 +50,3 @@ 'use strict'; | ||
DayWithinYear: require('./2022/DayWithinYear'), | ||
DefineMethodProperty: require('./2022/DefineMethodProperty'), | ||
DefinePropertyOrThrow: require('./2022/DefinePropertyOrThrow'), | ||
@@ -77,2 +78,5 @@ DeletePropertyOrThrow: require('./2022/DeletePropertyOrThrow'), | ||
InstanceofOperator: require('./2022/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2022/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2022/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2022/InternalizeJSONProperty'), | ||
Invoke: require('./2022/Invoke'), | ||
@@ -179,2 +183,3 @@ IsAccessorDescriptor: require('./2022/IsAccessorDescriptor'), | ||
TimeWithinDay: require('./2022/TimeWithinDay'), | ||
TimeZoneString: require('./2022/TimeZoneString'), | ||
ToBigInt: require('./2022/ToBigInt'), | ||
@@ -181,0 +186,0 @@ ToBigInt64: require('./2022/ToBigInt64'), |
@@ -53,2 +53,4 @@ 'use strict'; | ||
DayWithinYear: require('./2023/DayWithinYear'), | ||
DefaultTimeZone: require('./2023/DefaultTimeZone'), | ||
DefineMethodProperty: require('./2023/DefineMethodProperty'), | ||
DefinePropertyOrThrow: require('./2023/DefinePropertyOrThrow'), | ||
@@ -82,2 +84,5 @@ DeletePropertyOrThrow: require('./2023/DeletePropertyOrThrow'), | ||
InstanceofOperator: require('./2023/InstanceofOperator'), | ||
IntegerIndexedElementGet: require('./2023/IntegerIndexedElementGet'), | ||
IntegerIndexedElementSet: require('./2023/IntegerIndexedElementSet'), | ||
InternalizeJSONProperty: require('./2023/InternalizeJSONProperty'), | ||
Invoke: require('./2023/Invoke'), | ||
@@ -185,2 +190,3 @@ IsAccessorDescriptor: require('./2023/IsAccessorDescriptor'), | ||
TimeWithinDay: require('./2023/TimeWithinDay'), | ||
TimeZoneString: require('./2023/TimeZoneString'), | ||
ToBigInt: require('./2023/ToBigInt'), | ||
@@ -187,0 +193,0 @@ ToBigInt64: require('./2023/ToBigInt64'), |
@@ -9,2 +9,3 @@ 'use strict'; | ||
return !!value | ||
&& typeof value === 'object' | ||
&& hasOwn(value, '[[Completion]]') // TODO: confirm is a completion record | ||
@@ -11,0 +12,0 @@ && hasOwn(value, '[[Capability]]') |
@@ -15,2 +15,3 @@ 'use strict'; | ||
var ES2023 = require('./es2023'); | ||
var ES2024 = require('./es2024'); | ||
@@ -29,3 +30,4 @@ var ES = { | ||
ES2022: ES2022, | ||
ES2023: ES2023 | ||
ES2023: ES2023, | ||
ES2024: ES2024 | ||
}; | ||
@@ -32,0 +34,0 @@ assign(ES, ES5); |
{ | ||
"name": "es-abstract", | ||
"version": "1.22.5", | ||
"version": "1.23.0", | ||
"author": { | ||
@@ -63,2 +63,5 @@ "name": "Jordan Harband", | ||
"call-bind": "^1.0.7", | ||
"data-view-buffer": "^1.0.1", | ||
"data-view-byte-length": "^1.0.0", | ||
"data-view-byte-offset": "^1.0.0", | ||
"es-define-property": "^1.0.0", | ||
@@ -80,2 +83,3 @@ "es-errors": "^1.3.0", | ||
"is-callable": "^1.2.7", | ||
"is-data-view": "^1.0.1", | ||
"is-negative-zero": "^2.0.3", | ||
@@ -138,2 +142,3 @@ "is-regex": "^1.1.4", | ||
"object.fromentries": "^2.0.7", | ||
"safe-bigint": "^1.0.0", | ||
"safe-publish-latest": "^2.0.0", | ||
@@ -140,0 +145,0 @@ "ses": "^0.18.8", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2377624
2161
64052
45
38
+ Addeddata-view-buffer@^1.0.1
+ Addeddata-view-byte-length@^1.0.0
+ Addeddata-view-byte-offset@^1.0.0
+ Addedis-data-view@^1.0.1
- Removedes-abstract@1.23.3(transitive)