Socket
Socket
Sign inDemoInstall

es-abstract

Package Overview
Dependencies
64
Maintainers
1
Versions
83
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.22.4 to 1.22.5

2015/tables/typed-array-objects.js

22

2015/DetachArrayBuffer.js

@@ -8,2 +8,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var MessageChannel;

@@ -23,12 +25,16 @@ try {

}
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -25,14 +25,3 @@ 'use strict';

var table49 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -72,3 +61,3 @@ var isUnsignedElementType = function isUnsignedElementType(type) { return $charAt(type, 0) === 'U'; };

var elementSize = table49['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -75,0 +64,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

@@ -19,14 +19,3 @@ 'use strict';

var table49 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -61,3 +50,3 @@ var TypeToAO = {

if (typeof type !== 'string' || !hasOwn(table49, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -90,3 +79,3 @@ }

var elementSize = table49[type]; // step 7
var elementSize = tableTAO.size['$' + type]; // step 7
if (!elementSize) {

@@ -105,3 +94,3 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

} else {
var n = table49[type]; // step 3.a
var n = elementSize; // step 3.a

@@ -108,0 +97,0 @@ var convOp = TypeToAO[type]; // step 3.b

@@ -8,2 +8,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var MessageChannel;

@@ -23,12 +25,16 @@ try {

}
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -25,14 +25,3 @@ 'use strict';

var table49 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -72,3 +61,3 @@ var isUnsignedElementType = function isUnsignedElementType(type) { return $charAt(type, 0) === 'U'; };

var elementSize = table49['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -75,0 +64,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

@@ -19,14 +19,3 @@ 'use strict';

var table49 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -61,3 +50,3 @@ var TypeToAO = {

if (typeof type !== 'string' || !hasOwn(table49, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -90,3 +79,3 @@ }

var elementSize = table49[type]; // step 7
var elementSize = tableTAO.size['$' + type]; // step 7
if (!elementSize) {

@@ -105,3 +94,3 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

} else {
var n = table49[type]; // step 3.a
var n = elementSize; // step 3.a

@@ -108,0 +97,0 @@ var convOp = TypeToAO[type]; // step 3.b

@@ -6,2 +6,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var isArrayBuffer = require('is-array-buffer');

@@ -24,12 +26,16 @@ var isSharedArrayBuffer = require('is-shared-array-buffer');

}
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -22,14 +22,3 @@ 'use strict';

var table50 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -78,3 +67,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

var elementSize = table50['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -81,0 +70,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

@@ -19,14 +19,3 @@ 'use strict';

var table49 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -61,3 +50,3 @@ var TypeToAO = {

if (typeof type !== 'string' || !hasOwn(table49, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -90,3 +79,3 @@ }

var elementSize = table49[type]; // step 7
var elementSize = tableTAO.size['$' + type]; // step 7
if (!elementSize) {

@@ -105,3 +94,3 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

} else {
var n = table49[type]; // step 3.a
var n = elementSize; // step 3.a

@@ -108,0 +97,0 @@ var convOp = TypeToAO[type]; // step 3.b

@@ -6,2 +6,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var isArrayBuffer = require('is-array-buffer');

@@ -32,12 +34,15 @@ var isSharedArrayBuffer = require('is-shared-array-buffer');

if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -22,14 +22,3 @@ 'use strict';

var table50 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -78,3 +67,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

var elementSize = table50['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -81,0 +70,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

@@ -19,14 +19,3 @@ 'use strict';

var table49 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -61,3 +50,3 @@ var TypeToAO = {

if (typeof type !== 'string' || !hasOwn(table49, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -90,3 +79,3 @@ }

var elementSize = table49[type]; // step 7
var elementSize = tableTAO.size['$' + type]; // step 7
if (!elementSize) {

@@ -105,3 +94,3 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

} else {
var n = table49[type]; // step 3.a
var n = elementSize; // step 3.a

@@ -108,0 +97,0 @@ var convOp = TypeToAO[type]; // step 3.b

@@ -6,2 +6,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var isArrayBuffer = require('is-array-buffer');

@@ -32,12 +34,15 @@ var isSharedArrayBuffer = require('is-shared-array-buffer');

if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -21,14 +21,3 @@ 'use strict';

var table59 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -77,3 +66,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

var elementSize = table59['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -80,0 +69,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

@@ -19,14 +19,3 @@ 'use strict';

var table49 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -61,3 +50,3 @@ var TypeToAO = {

if (typeof type !== 'string' || !hasOwn(table49, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -90,3 +79,3 @@ }

var elementSize = table49[type]; // step 7
var elementSize = tableTAO.size['$' + type]; // step 7
if (!elementSize) {

@@ -105,3 +94,3 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');

} else {
var n = table49[type]; // step 3.a
var n = elementSize; // step 3.a

@@ -108,0 +97,0 @@ var convOp = TypeToAO[type]; // step 3.b

@@ -6,2 +6,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var isArrayBuffer = require('is-array-buffer');

@@ -32,12 +34,15 @@ var isSharedArrayBuffer = require('is-shared-array-buffer');

if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -22,16 +22,3 @@ 'use strict';

var table61 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$BigInt64: 8,
$BigUint64: 8,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -52,3 +39,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

if (typeof type !== 'string' || typeof table61['$' + type] !== 'number') {
if (typeof type !== 'string' || typeof tableTAO.size['$' + type] !== 'number') {
throw new $TypeError('Assertion failed: `type` must be a Typed Array element type');

@@ -81,3 +68,3 @@ }

var elementSize = table61['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -84,0 +71,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "BigInt64", "BigUint64", "Float32", or "Float64"');

@@ -16,16 +16,3 @@ 'use strict';

var table61 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
BigInt64: 8,
BigUint64: 8,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -49,3 +36,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

if (typeof type !== 'string' || !hasOwn(table61, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -85,3 +72,3 @@ }

var elementSize = table61[type]; // step 6
var elementSize = tableTAO.size['$' + type]; // step 6

@@ -88,0 +75,0 @@ // 8. If isLittleEndian is not present, set isLittleEndian to either true or false. The choice is implementation dependent and should be the alternative that is most efficient for the implementation. An implementation must use the same value each time this step is executed and the same value must be used for the corresponding step in the GetValueFromBuffer abstract operation.

@@ -6,2 +6,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var isArrayBuffer = require('is-array-buffer');

@@ -32,12 +34,15 @@ var isSharedArrayBuffer = require('is-shared-array-buffer');

if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -22,16 +22,3 @@ 'use strict';

var table61 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$BigInt64: 8,
$BigUint64: 8,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -52,3 +39,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

if (typeof type !== 'string' || typeof table61['$' + type] !== 'number') {
if (typeof type !== 'string' || typeof tableTAO.size['$' + type] !== 'number') {
throw new $TypeError('Assertion failed: `type` must be a Typed Array element type');

@@ -81,3 +68,3 @@ }

var elementSize = table61['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -84,0 +71,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "BigInt64", "BigUint64", "Float32", or "Float64"');

@@ -24,32 +24,4 @@ 'use strict';

var table60Sizes = {
__proto__: null,
$Int8Array: 1,
$Uint8Array: 1,
$Uint8ClampedArray: 1,
$Int16Array: 2,
$Uint16Array: 2,
$Int32Array: 4,
$Uint32Array: 4,
$BigInt64Array: 8,
$BigUint64Array: 8,
$Float32Array: 4,
$Float64Array: 8
};
var tableTAO = require('./tables/typed-array-objects');
var table60Types = {
__proto__: null,
$Int8Array: 'Int8',
$Uint8Array: 'Uint8',
$Uint8ClampedArray: 'Uint8C',
$Int16Array: 'Int16',
$Uint16Array: 'Uint16',
$Int32Array: 'Int32',
$Uint32Array: 'Uint32',
$BigInt64Array: 'BigInt64',
$BigUint64Array: 'BigUint64',
$Float32Array: 'Float32',
$Float64Array: 'Float64'
};
// https://262.ecma-international.org/12.0/#sec-settypedarrayfromarraylike

@@ -81,5 +53,5 @@

var targetElementSize = table60Sizes['$' + targetName]; // step 6
var targetType = tableTAO.name['$' + targetName]; // step 7
var targetType = table60Types['$' + targetName]; // step 7
var targetElementSize = tableTAO.size['$' + targetType]; // step 6

@@ -86,0 +58,0 @@ var targetByteOffset = typedArrayByteOffset(target); // step 8

@@ -25,32 +25,4 @@ 'use strict';

var table60Sizes = {
__proto__: null,
$Int8Array: 1,
$Uint8Array: 1,
$Uint8ClampedArray: 1,
$Int16Array: 2,
$Uint16Array: 2,
$Int32Array: 4,
$Uint32Array: 4,
$BigInt64Array: 8,
$BigUint64Array: 8,
$Float32Array: 4,
$Float64Array: 8
};
var tableTAO = require('./tables/typed-array-objects');
var table60Types = {
__proto__: null,
$Int8Array: 'Int8',
$Uint8Array: 'Uint8',
$Uint8ClampedArray: 'Uint8C',
$Int16Array: 'Int16',
$Uint16Array: 'Uint16',
$Int32Array: 'Int32',
$Uint32Array: 'Uint32',
$BigInt64Array: 'BigInt64',
$BigUint64Array: 'BigUint64',
$Float32Array: 'Float32',
$Float64Array: 'Float64'
};
// https://262.ecma-international.org/12.0/#sec-settypedarrayfromtypedarray

@@ -89,5 +61,5 @@

var targetType = table60Types['$' + targetName]; // step 8
var targetType = tableTAO.name['$' + targetName]; // step 8
var targetElementSize = table60Sizes['$' + targetName]; // step 9
var targetElementSize = tableTAO.size['$' + targetType]; // step 9

@@ -98,5 +70,5 @@ var targetByteOffset = typedArrayByteOffset(target); // step 10

var srcType = table60Types['$' + srcName]; // step 12
var srcType = tableTAO.name['$' + srcName]; // step 12
var srcElementSize = table60Sizes['$' + srcName]; // step 13
var srcElementSize = tableTAO.size['$' + srcName]; // step 13

@@ -103,0 +75,0 @@ var srcLength = typedArrayLength(source); // step 14

@@ -16,16 +16,3 @@ 'use strict';

var table60 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
BigInt64: 8,
BigUint64: 8,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -49,3 +36,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

if (typeof type !== 'string' || !hasOwn(table60, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -81,3 +68,3 @@ }

var elementSize = table60[type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5

@@ -84,0 +71,0 @@ // 6. If isLittleEndian is not present, set isLittleEndian to either true or false. The choice is implementation dependent and should be the alternative that is most efficient for the implementation. An implementation must use the same value each time this step is executed and the same value must be used for the corresponding step in the GetValueFromBuffer abstract operation.

@@ -13,16 +13,3 @@ 'use strict';

var table60 = {
__proto__: null,
$Int8Array: 1,
$Uint8Array: 1,
$Uint8ClampedArray: 1,
$Int16Array: 2,
$Uint16Array: 2,
$Int32Array: 4,
$Uint32Array: 4,
$BigInt64Array: 8,
$BigUint64Array: 8,
$Float32Array: 4,
$Float64Array: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -53,3 +40,4 @@ // https://262.ecma-international.org/12.0/#sec-validateatomicaccess

var elementSize = table60['$' + arrayTypeName]; // step 7
var taType = tableTAO.name['$' + arrayTypeName];
var elementSize = tableTAO.size['$' + taType]; // step 7

@@ -56,0 +44,0 @@ var offset = typedArrayByteOffset(typedArray); // step 8

@@ -13,16 +13,3 @@ 'use strict';

var table60 = {
__proto__: null,
$Int8Array: 'Int8',
$Uint8Array: 'Uint8',
$Uint8ClampedArray: 'Uint8C',
$Int16Array: 'Int16',
$Uint16Array: 'Uint16',
$Int32Array: 'Int32',
$Uint32Array: 'Uint32',
$BigInt64Array: 'BigInt64',
$BigUint64Array: 'BigUint64',
$Float32Array: 'Float32',
$Float64Array: 'Float64'
};
var tableTAO = require('./tables/typed-array-objects');

@@ -40,3 +27,3 @@ module.exports = function ValidateIntegerTypedArray(typedArray) {

var type = table60['$' + typeName]; // step 4
var type = tableTAO.name['$' + typeName]; // step 4

@@ -43,0 +30,0 @@ if (waitable) { // step 5

@@ -6,2 +6,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var isArrayBuffer = require('is-array-buffer');

@@ -32,12 +34,15 @@ var isSharedArrayBuffer = require('is-shared-array-buffer');

if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -22,16 +22,3 @@ 'use strict';

var table61 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$BigInt64: 8,
$BigUint64: 8,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -52,3 +39,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

if (typeof type !== 'string' || typeof table61['$' + type] !== 'number') {
if (typeof type !== 'string' || typeof tableTAO.size['$' + type] !== 'number') {
throw new $TypeError('Assertion failed: `type` must be a Typed Array element type');

@@ -81,3 +68,3 @@ }

var elementSize = table61['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -84,0 +71,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "BigInt64", "BigUint64", "Float32", or "Float64"');

@@ -16,16 +16,3 @@ 'use strict';

var table60 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
BigInt64: 8,
BigUint64: 8,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -49,3 +36,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

if (typeof type !== 'string' || !hasOwn(table60, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -81,3 +68,3 @@ }

var elementSize = table60[type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5

@@ -84,0 +71,0 @@ // 6. If isLittleEndian is not present, set isLittleEndian to either true or false. The choice is implementation dependent and should be the alternative that is most efficient for the implementation. An implementation must use the same value each time this step is executed and the same value must be used for the corresponding step in the GetValueFromBuffer abstract operation.

@@ -12,16 +12,3 @@ 'use strict';

var table71 = {
__proto__: null,
$Int8Array: 1,
$Uint8Array: 1,
$Uint8ClampedArray: 1,
$Int16Array: 2,
$Uint16Array: 2,
$Int32Array: 4,
$Uint32Array: 4,
$BigInt64Array: 8,
$BigUint64Array: 8,
$Float32Array: 4,
$Float64Array: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -33,3 +20,3 @@ module.exports = function TypedArrayElementSize(O) {

}
var size = table71['$' + type];
var size = tableTAO.size['$' + tableTAO.name['$' + type]];
if (!isInteger(size) || size < 0) {

@@ -36,0 +23,0 @@ throw new $SyntaxError('Assertion failed: Unknown TypedArray type `' + type + '`');

@@ -10,16 +10,3 @@ 'use strict';

var table71 = {
__proto__: null,
$Int8Array: 'Int8',
$Uint8Array: 'Uint8',
$Uint8ClampedArray: 'Uint8C',
$Int16Array: 'Int16',
$Uint16Array: 'Uint16',
$Int32Array: 'Int32',
$Uint32Array: 'Uint32',
$BigInt64Array: 'BigInt64',
$BigUint64Array: 'BigUint64',
$Float32Array: 'Float32',
$Float64Array: 'Float64'
};
var tableTAO = require('./tables/typed-array-objects');

@@ -31,3 +18,3 @@ module.exports = function TypedArrayElementType(O) {

}
var result = table71['$' + type];
var result = tableTAO.name['$' + type];
if (typeof result !== 'string') {

@@ -34,0 +21,0 @@ throw new $SyntaxError('Assertion failed: Unknown TypedArray type `' + type + '`');

@@ -6,2 +6,4 @@ 'use strict';

var IsDetachedBuffer = require('./IsDetachedBuffer');
var isArrayBuffer = require('is-array-buffer');

@@ -32,12 +34,15 @@ var isSharedArrayBuffer = require('is-shared-array-buffer');

if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
if (typeof structuredClone === 'function') {
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
} else if (typeof postMessage === 'function') {
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
} else if (MessageChannel) {
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
} else {
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
}
}
return null;
};

@@ -22,16 +22,3 @@ 'use strict';

var table61 = {
__proto__: null,
$Int8: 1,
$Uint8: 1,
$Uint8C: 1,
$Int16: 2,
$Uint16: 2,
$Int32: 4,
$Uint32: 4,
$BigInt64: 8,
$BigUint64: 8,
$Float32: 4,
$Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -52,3 +39,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

if (typeof type !== 'string' || typeof table61['$' + type] !== 'number') {
if (typeof type !== 'string' || typeof tableTAO.size['$' + type] !== 'number') {
throw new $TypeError('Assertion failed: `type` must be a Typed Array element type');

@@ -81,3 +68,3 @@ }

var elementSize = table61['$' + type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5
if (!elementSize) {

@@ -84,0 +71,0 @@ throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "BigInt64", "BigUint64", "Float32", or "Float64"');

@@ -16,16 +16,3 @@ 'use strict';

var table60 = {
__proto__: null,
Int8: 1,
Uint8: 1,
Uint8C: 1,
Int16: 2,
Uint16: 2,
Int32: 4,
Uint32: 4,
BigInt64: 8,
BigUint64: 8,
Float32: 4,
Float64: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -49,3 +36,3 @@ var defaultEndianness = require('../helpers/defaultEndianness');

if (typeof type !== 'string' || !hasOwn(table60, type)) {
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');

@@ -81,3 +68,3 @@ }

var elementSize = table60[type]; // step 5
var elementSize = tableTAO.size['$' + type]; // step 5

@@ -84,0 +71,0 @@ // 6. If isLittleEndian is not present, set isLittleEndian to either true or false. The choice is implementation dependent and should be the alternative that is most efficient for the implementation. An implementation must use the same value each time this step is executed and the same value must be used for the corresponding step in the GetValueFromBuffer abstract operation.

@@ -12,16 +12,3 @@ 'use strict';

var table71 = {
__proto__: null,
$Int8Array: 1,
$Uint8Array: 1,
$Uint8ClampedArray: 1,
$Int16Array: 2,
$Uint16Array: 2,
$Int32Array: 4,
$Uint32Array: 4,
$BigInt64Array: 8,
$BigUint64Array: 8,
$Float32Array: 4,
$Float64Array: 8
};
var tableTAO = require('./tables/typed-array-objects');

@@ -33,3 +20,3 @@ module.exports = function TypedArrayElementSize(O) {

}
var size = table71['$' + type];
var size = tableTAO.size['$' + tableTAO.name['$' + type]];
if (!isInteger(size) || size < 0) {

@@ -36,0 +23,0 @@ throw new $SyntaxError('Assertion failed: Unknown TypedArray type `' + type + '`');

@@ -10,16 +10,3 @@ 'use strict';

var table71 = {
__proto__: null,
$Int8Array: 'Int8',
$Uint8Array: 'Uint8',
$Uint8ClampedArray: 'Uint8C',
$Int16Array: 'Int16',
$Uint16Array: 'Uint16',
$Int32Array: 'Int32',
$Uint32Array: 'Uint32',
$BigInt64Array: 'BigInt64',
$BigUint64Array: 'BigUint64',
$Float32Array: 'Float32',
$Float64Array: 'Float64'
};
var tableTAO = require('./tables/typed-array-objects');

@@ -31,3 +18,3 @@ module.exports = function TypedArrayElementType(O) {

}
var result = table71['$' + type];
var result = tableTAO.name['$' + type];
if (typeof result !== 'string') {

@@ -34,0 +21,0 @@ throw new $SyntaxError('Assertion failed: Unknown TypedArray type `' + type + '`');

@@ -0,1 +1,15 @@

1.22.5 / 2024-02-28
=================
* [Fix] `ES2015`+: `DetachArrayBuffer`: node v21.0.0+ structuredClone throws with an already-detached ArrayBuffer
* [Fix] `helpers/assertRecord`: partial revert of 87c340d2; unintentional breaking change
* [patch] records: fix indentation, improve object checks
* [Refactor] extract TA tables to separate files
* [meta] extract "list spackled files" to separate run-script
* [Deps] update `available-typed-arrays`, `es-set-tostringtag`, `has-proto`, `is-negative-zero`, `is-shared-array-buffer`, `typed-array-buffer`, `typed-array-byte-length`, `typed-array-byte-offset`, `typed-array-length`
* [Dev Deps] update `available-regexp-flags`, `tape`
* [Dev Deps] pin `jackspeak` and `glob`, since v2.1.2+ and v10.3.8+ respectively depend on npm aliases, which kill the install process in npm < 6
* [Tests] use `define-{accessor,data}-property`
* [Tests] fix some test cases
* [Tests] use `safeBigInt` for `Z()` pattern to handle node 10.4 - 10.8
1.22.4 / 2024-02-13

@@ -2,0 +16,0 @@ =================

@@ -24,3 +24,3 @@ 'use strict';

module.exports = function assertRecord(recordType, argumentName, value) {
module.exports = function assertRecord(Type, recordType, argumentName, value) {
var predicate = predicates[recordType];

@@ -27,0 +27,0 @@ if (typeof predicate !== 'function') {

@@ -9,5 +9,5 @@ 'use strict';

return !!value
&& hasOwn(value, '[[Completion]]') // TODO: confirm is a completion record
&& hasOwn(value, '[[Capability]]')
&& isPromiseCapabilityRecord(value['[[Capability]]']);
&& hasOwn(value, '[[Completion]]') // TODO: confirm is a completion record
&& hasOwn(value, '[[Capability]]')
&& isPromiseCapabilityRecord(value['[[Capability]]']);
};

@@ -6,8 +6,9 @@ 'use strict';

module.exports = function isIteratorRecord(value) {
return value
&& hasOwn(value, '[[Iterator]]')
&& hasOwn(value, '[[NextMethod]]')
&& typeof value['[[NextMethod]]'] === 'function'
&& hasOwn(value, '[[Done]]')
&& typeof value['[[Done]]'] === 'boolean';
return !!value
&& typeof value === 'object'
&& hasOwn(value, '[[Iterator]]')
&& hasOwn(value, '[[NextMethod]]')
&& typeof value['[[NextMethod]]'] === 'function'
&& hasOwn(value, '[[Done]]')
&& typeof value['[[Done]]'] === 'boolean';
};

@@ -9,9 +9,11 @@ 'use strict';

return (
hasOwn(record, '[[StartIndex]]')
&& hasOwn(record, '[[EndIndex]]')
&& record['[[StartIndex]]'] >= 0
&& record['[[EndIndex]]'] >= record['[[StartIndex]]']
&& String(parseInt(record['[[StartIndex]]'], 10)) === String(record['[[StartIndex]]'])
&& String(parseInt(record['[[EndIndex]]'], 10)) === String(record['[[EndIndex]]'])
!!record
&& typeof record === 'object'
&& hasOwn(record, '[[StartIndex]]')
&& hasOwn(record, '[[EndIndex]]')
&& record['[[StartIndex]]'] >= 0
&& record['[[EndIndex]]'] >= record['[[StartIndex]]']
&& String(parseInt(record['[[StartIndex]]'], 10)) === String(record['[[StartIndex]]'])
&& String(parseInt(record['[[EndIndex]]'], 10)) === String(record['[[EndIndex]]'])
);
};

@@ -7,9 +7,11 @@ 'use strict';

return !!value
&& hasOwn(value, '[[Resolve]]')
&& typeof value['[[Resolve]]'] === 'function'
&& hasOwn(value, '[[Reject]]')
&& typeof value['[[Reject]]'] === 'function'
&& hasOwn(value, '[[Promise]]')
&& value['[[Promise]]']
&& typeof value['[[Promise]]'].then === 'function';
&& typeof value === 'object'
&& hasOwn(value, '[[Resolve]]')
&& typeof value['[[Resolve]]'] === 'function'
&& hasOwn(value, '[[Reject]]')
&& typeof value['[[Reject]]'] === 'function'
&& hasOwn(value, '[[Promise]]')
&& !!value['[[Promise]]']
&& typeof value['[[Promise]]'] === 'object'
&& typeof value['[[Promise]]'].then === 'function';
};

@@ -24,3 +24,3 @@ 'use strict';

for (var key in Desc) { // eslint-disable-line
for (var key in Desc) { // eslint-disable-line
if (hasOwn(Desc, key) && !allowed[key]) {

@@ -27,0 +27,0 @@ return false;

@@ -8,15 +8,16 @@ 'use strict';

module.exports = function isRegExpRecord(value) {
return value
&& hasOwn(value, '[[IgnoreCase]]')
&& typeof value['[[IgnoreCase]]'] === 'boolean'
&& hasOwn(value, '[[Multiline]]')
&& typeof value['[[Multiline]]'] === 'boolean'
&& hasOwn(value, '[[DotAll]]')
&& typeof value['[[DotAll]]'] === 'boolean'
&& hasOwn(value, '[[Unicode]]')
&& typeof value['[[Unicode]]'] === 'boolean'
&& hasOwn(value, '[[CapturingGroupsCount]]')
&& typeof value['[[CapturingGroupsCount]]'] === 'number'
&& isInteger(value['[[CapturingGroupsCount]]'])
&& value['[[CapturingGroupsCount]]'] >= 0;
return !!value
&& typeof value === 'object'
&& hasOwn(value, '[[IgnoreCase]]')
&& typeof value['[[IgnoreCase]]'] === 'boolean'
&& hasOwn(value, '[[Multiline]]')
&& typeof value['[[Multiline]]'] === 'boolean'
&& hasOwn(value, '[[DotAll]]')
&& typeof value['[[DotAll]]'] === 'boolean'
&& hasOwn(value, '[[Unicode]]')
&& typeof value['[[Unicode]]'] === 'boolean'
&& hasOwn(value, '[[CapturingGroupsCount]]')
&& typeof value['[[CapturingGroupsCount]]'] === 'number'
&& isInteger(value['[[CapturingGroupsCount]]'])
&& value['[[CapturingGroupsCount]]'] >= 0;
};
{
"name": "es-abstract",
"version": "1.22.4",
"version": "1.22.5",
"author": {

@@ -28,3 +28,4 @@ "name": "Jordan Harband",

"scripts": {
"prespackle": "git ls-files | xargs git check-attr spackled | grep -v 'unspecified$' | cut -d: -f1 | xargs rm || true",
"spackled": "git ls-files | xargs git check-attr spackled | grep -v 'unspecified$' | cut -d: -f1",
"prespackle": "npm run --silent spackled | xargs rm || true",
"spackle": "node operations/spackle 1 && node operations/build-unicode.mjs",

@@ -61,7 +62,7 @@ "postspackle": "git ls-files | xargs git check-attr spackled | grep -v 'unspecified$' | cut -d: -f1 | xargs git add",

"arraybuffer.prototype.slice": "^1.0.3",
"available-typed-arrays": "^1.0.6",
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"es-set-tostringtag": "^2.0.2",
"es-set-tostringtag": "^2.0.3",
"es-to-primitive": "^1.2.1",

@@ -74,3 +75,3 @@ "function.prototype.name": "^1.1.6",

"has-property-descriptors": "^1.0.2",
"has-proto": "^1.0.1",
"has-proto": "^1.0.3",
"has-symbols": "^1.0.3",

@@ -81,5 +82,5 @@ "hasown": "^2.0.1",

"is-callable": "^1.2.7",
"is-negative-zero": "^2.0.2",
"is-negative-zero": "^2.0.3",
"is-regex": "^1.1.4",
"is-shared-array-buffer": "^1.0.2",
"is-shared-array-buffer": "^1.0.3",
"is-string": "^1.0.7",

@@ -97,6 +98,6 @@ "is-typed-array": "^1.1.13",

"string.prototype.trimstart": "^1.0.7",
"typed-array-buffer": "^1.0.1",
"typed-array-byte-length": "^1.0.0",
"typed-array-byte-offset": "^1.0.0",
"typed-array-length": "^1.0.4",
"typed-array-buffer": "^1.0.2",
"typed-array-byte-length": "^1.0.1",
"typed-array-byte-offset": "^1.0.2",
"typed-array-length": "^1.0.5",
"unbox-primitive": "^1.0.2",

@@ -113,4 +114,6 @@ "which-typed-array": "^1.1.14"

"aud": "^2.0.4",
"available-regexp-flags": "^1.0.2",
"available-regexp-flags": "^1.0.4",
"cheerio": "=1.0.0-rc.3",
"define-accessor-property": "^1.0.0",
"define-data-property": "^1.1.4",
"diff": "^5.1.0",

@@ -123,2 +126,3 @@ "eclint": "^2.8.1",

"functions-have-names": "^1.2.3",
"glob": "=10.3.7",
"has-bigints": "^1.0.2",

@@ -130,2 +134,3 @@ "has-named-captures": "^1.0.0",

"is-registered-symbol": "^1.0.1",
"jackspeak": "=2.1.1",
"make-arrow-function": "^1.2.0",

@@ -141,3 +146,3 @@ "make-async-function": "^1.0.0",

"ses": "^0.18.8",
"tape": "^5.7.4"
"tape": "^5.7.5"
},

@@ -144,0 +149,0 @@ "testling": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc