0.1 release, add .on(...) and .once(...) to RJSVM, add tests
This commit is contained in:
+1742
-20
File diff suppressed because it is too large
Load Diff
+28
@@ -1,3 +1,31 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [v1.2.1](https://github.com/ljharb/define-properties/compare/v1.2.0...v1.2.1) - 2023-09-12
|
||||
|
||||
### Commits
|
||||
|
||||
- [Refactor] use `define-data-property` [`e7782a7`](https://github.com/ljharb/define-properties/commit/e7782a7480a62f8b6e141b49371e6de4df176c97)
|
||||
- [actions] use reusable rebase action [`cd249c3`](https://github.com/ljharb/define-properties/commit/cd249c3920607bc8eeb7c0cd5b672b810983cac5)
|
||||
- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`8205f97`](https://github.com/ljharb/define-properties/commit/8205f9734a4da8ee5b3b29798788567a09b330e8)
|
||||
|
||||
## [v1.2.0](https://github.com/ljharb/define-properties/compare/v1.1.4...v1.2.0) - 2023-02-10
|
||||
|
||||
### Commits
|
||||
|
||||
- [New] if the predicate is boolean `true`, it compares the existing value with `===` as the predicate [`d8dd6fc`](https://github.com/ljharb/define-properties/commit/d8dd6fca40d7c5878a4b643b91e66ae5a513a194)
|
||||
- [meta] add `auto-changelog` [`7ebe2b0`](https://github.com/ljharb/define-properties/commit/7ebe2b0a0f90e62b842942cd45e86864fe75d9f6)
|
||||
- [meta] use `npmignore` to autogenerate an npmignore file [`647478a`](https://github.com/ljharb/define-properties/commit/647478a8401fbf053fb633c0a3a7c982da6bad74)
|
||||
- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`e620d70`](https://github.com/ljharb/define-properties/commit/e620d707d2e1118a38796f22a862200eb0a53fff)
|
||||
- [Dev Deps] update `aud`, `tape` [`f1e5072`](https://github.com/ljharb/define-properties/commit/f1e507225c2551a99ed4fe40d3fe71b0f44acf88)
|
||||
- [actions] update checkout action [`628b3af`](https://github.com/ljharb/define-properties/commit/628b3af5c74b8f0963296d811a8f6fa657baf964)
|
||||
|
||||
<!-- auto-changelog-above -->
|
||||
|
||||
1.1.4 / 2022-04-14
|
||||
=================
|
||||
* [Refactor] use `has-property-descriptors`
|
||||
|
||||
+13
-13
@@ -5,29 +5,29 @@ var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbo
|
||||
|
||||
var toStr = Object.prototype.toString;
|
||||
var concat = Array.prototype.concat;
|
||||
var origDefineProperty = Object.defineProperty;
|
||||
var defineDataProperty = require('define-data-property');
|
||||
|
||||
var isFunction = function (fn) {
|
||||
return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
|
||||
};
|
||||
|
||||
var hasPropertyDescriptors = require('has-property-descriptors')();
|
||||
|
||||
var supportsDescriptors = origDefineProperty && hasPropertyDescriptors;
|
||||
var supportsDescriptors = require('has-property-descriptors')();
|
||||
|
||||
var defineProperty = function (object, name, value, predicate) {
|
||||
if (name in object && (!isFunction(predicate) || !predicate())) {
|
||||
return;
|
||||
if (name in object) {
|
||||
if (predicate === true) {
|
||||
if (object[name] === value) {
|
||||
return;
|
||||
}
|
||||
} else if (!isFunction(predicate) || !predicate()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (supportsDescriptors) {
|
||||
origDefineProperty(object, name, {
|
||||
configurable: true,
|
||||
enumerable: false,
|
||||
value: value,
|
||||
writable: true
|
||||
});
|
||||
defineDataProperty(object, name, value, true);
|
||||
} else {
|
||||
object[name] = value; // eslint-disable-line no-param-reassign
|
||||
defineDataProperty(object, name, value);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+27
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "define-properties",
|
||||
"version": "1.1.4",
|
||||
"version": "1.2.1",
|
||||
"author": "Jordan Harband <ljharb@gmail.com>",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
@@ -9,13 +9,16 @@
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"prepack": "npmignore --auto --commentLines=autogenerated",
|
||||
"prepublish": "not-in-publish || npm run prepublishOnly",
|
||||
"prepublishOnly": "safe-publish-latest",
|
||||
"pretest": "npm run lint",
|
||||
"test": "npm run tests-only",
|
||||
"posttest": "aud --production",
|
||||
"tests-only": "nyc tape 'test/**/*.js'",
|
||||
"lint": "eslint --ext=js,mjs ."
|
||||
"lint": "eslint --ext=js,mjs .",
|
||||
"version": "auto-changelog && git add CHANGELOG.md",
|
||||
"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -31,16 +34,20 @@
|
||||
"ES5"
|
||||
],
|
||||
"dependencies": {
|
||||
"define-data-property": "^1.0.1",
|
||||
"has-property-descriptors": "^1.0.0",
|
||||
"object-keys": "^1.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ljharb/eslint-config": "^21.0.0",
|
||||
"aud": "^2.0.0",
|
||||
"@ljharb/eslint-config": "^21.1.0",
|
||||
"aud": "^2.0.3",
|
||||
"auto-changelog": "^2.4.0",
|
||||
"eslint": "=8.8.0",
|
||||
"in-publish": "^2.0.1",
|
||||
"npmignore": "^0.3.0",
|
||||
"nyc": "^10.3.2",
|
||||
"safe-publish-latest": "^2.0.0",
|
||||
"tape": "^5.5.3"
|
||||
"tape": "^5.6.6"
|
||||
},
|
||||
"testling": {
|
||||
"files": "test/index.js",
|
||||
@@ -62,5 +69,20 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"auto-changelog": {
|
||||
"output": "CHANGELOG.md",
|
||||
"template": "keepachangelog",
|
||||
"unreleased": false,
|
||||
"commitLimit": false,
|
||||
"backfillLimit": false,
|
||||
"hideCredit": true,
|
||||
"startingVersion": "1.1.5"
|
||||
},
|
||||
"publishConfig": {
|
||||
"ignore": [
|
||||
".github/workflows",
|
||||
"test/"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -17,6 +17,7 @@
|
||||
"eqeqeq": [2, "allow-null"],
|
||||
"func-name-matching": 0,
|
||||
"id-length": 0,
|
||||
"max-lines": 0,
|
||||
"max-lines-per-function": [2, 90],
|
||||
"max-params": [2, 4],
|
||||
"max-statements": 0,
|
||||
|
||||
+19
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [v1.2.1](https://github.com/ljharb/get-intrinsic/compare/v1.2.0...v1.2.1) - 2023-05-13
|
||||
|
||||
### Commits
|
||||
|
||||
- [Fix] avoid a crash in envs without `__proto__` [`7bad8d0`](https://github.com/ljharb/get-intrinsic/commit/7bad8d061bf8721733b58b73a2565af2b6756b64)
|
||||
- [Dev Deps] update `es-abstract` [`c60e6b7`](https://github.com/ljharb/get-intrinsic/commit/c60e6b7b4cf9660c7f27ed970970fd55fac48dc5)
|
||||
|
||||
## [v1.2.0](https://github.com/ljharb/get-intrinsic/compare/v1.1.3...v1.2.0) - 2023-01-19
|
||||
|
||||
### Commits
|
||||
|
||||
- [actions] update checkout action [`ca6b12f`](https://github.com/ljharb/get-intrinsic/commit/ca6b12f31eaacea4ea3b055e744cd61623385ffb)
|
||||
- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `tape` [`41a3727`](https://github.com/ljharb/get-intrinsic/commit/41a3727d0026fa04273ae216a5f8e12eefd72da8)
|
||||
- [Fix] ensure `Error.prototype` is undeniable [`c511e97`](https://github.com/ljharb/get-intrinsic/commit/c511e97ae99c764c4524b540dee7a70757af8da3)
|
||||
- [Dev Deps] update `aud`, `es-abstract`, `tape` [`1bef8a8`](https://github.com/ljharb/get-intrinsic/commit/1bef8a8fd439ebb80863199b6189199e0851ac67)
|
||||
- [Dev Deps] update `aud`, `es-abstract` [`0d41f16`](https://github.com/ljharb/get-intrinsic/commit/0d41f16bcd500bc28b7bfc98043ebf61ea081c26)
|
||||
- [New] add `BigInt64Array` and `BigUint64Array` [`a6cca25`](https://github.com/ljharb/get-intrinsic/commit/a6cca25f29635889b7e9bd669baf9e04be90e48c)
|
||||
- [Tests] use `gopd` [`ecf7722`](https://github.com/ljharb/get-intrinsic/commit/ecf7722240d15cfd16edda06acf63359c10fb9bd)
|
||||
|
||||
## [v1.1.3](https://github.com/ljharb/get-intrinsic/compare/v1.1.2...v1.1.3) - 2022-09-12
|
||||
|
||||
### Commits
|
||||
|
||||
+25
-8
@@ -43,18 +43,23 @@ var ThrowTypeError = $gOPD
|
||||
: throwTypeError;
|
||||
|
||||
var hasSymbols = require('has-symbols')();
|
||||
var hasProto = require('has-proto')();
|
||||
|
||||
var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
|
||||
var getProto = Object.getPrototypeOf || (
|
||||
hasProto
|
||||
? function (x) { return x.__proto__; } // eslint-disable-line no-proto
|
||||
: null
|
||||
);
|
||||
|
||||
var needsEval = {};
|
||||
|
||||
var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);
|
||||
var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);
|
||||
|
||||
var INTRINSICS = {
|
||||
'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
|
||||
'%Array%': Array,
|
||||
'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
|
||||
'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,
|
||||
'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,
|
||||
'%AsyncFromSyncIteratorPrototype%': undefined,
|
||||
'%AsyncFunction%': needsEval,
|
||||
'%AsyncGenerator%': needsEval,
|
||||
@@ -62,6 +67,8 @@ var INTRINSICS = {
|
||||
'%AsyncIteratorPrototype%': needsEval,
|
||||
'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
|
||||
'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
|
||||
'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,
|
||||
'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,
|
||||
'%Boolean%': Boolean,
|
||||
'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
|
||||
'%Date%': Date,
|
||||
@@ -82,10 +89,10 @@ var INTRINSICS = {
|
||||
'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
|
||||
'%isFinite%': isFinite,
|
||||
'%isNaN%': isNaN,
|
||||
'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,
|
||||
'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,
|
||||
'%JSON%': typeof JSON === 'object' ? JSON : undefined,
|
||||
'%Map%': typeof Map === 'undefined' ? undefined : Map,
|
||||
'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),
|
||||
'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),
|
||||
'%Math%': Math,
|
||||
'%Number%': Number,
|
||||
'%Object%': Object,
|
||||
@@ -98,10 +105,10 @@ var INTRINSICS = {
|
||||
'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
|
||||
'%RegExp%': RegExp,
|
||||
'%Set%': typeof Set === 'undefined' ? undefined : Set,
|
||||
'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),
|
||||
'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),
|
||||
'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
|
||||
'%String%': String,
|
||||
'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,
|
||||
'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,
|
||||
'%Symbol%': hasSymbols ? Symbol : undefined,
|
||||
'%SyntaxError%': $SyntaxError,
|
||||
'%ThrowTypeError%': ThrowTypeError,
|
||||
@@ -117,6 +124,16 @@ var INTRINSICS = {
|
||||
'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
|
||||
};
|
||||
|
||||
if (getProto) {
|
||||
try {
|
||||
null.error; // eslint-disable-line no-unused-expressions
|
||||
} catch (e) {
|
||||
// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229
|
||||
var errorProto = getProto(getProto(e));
|
||||
INTRINSICS['%Error.prototype%'] = errorProto;
|
||||
}
|
||||
}
|
||||
|
||||
var doEval = function doEval(name) {
|
||||
var value;
|
||||
if (name === '%AsyncFunction%') {
|
||||
@@ -132,7 +149,7 @@ var doEval = function doEval(name) {
|
||||
}
|
||||
} else if (name === '%AsyncIteratorPrototype%') {
|
||||
var gen = doEval('%AsyncGenerator%');
|
||||
if (gen) {
|
||||
if (gen && getProto) {
|
||||
value = getProto(gen.prototype);
|
||||
}
|
||||
}
|
||||
|
||||
+8
-6
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "get-intrinsic",
|
||||
"version": "1.1.3",
|
||||
"version": "1.2.1",
|
||||
"description": "Get and robustly cache all JS language-level intrinsics at first require time",
|
||||
"main": "index.js",
|
||||
"exports": {
|
||||
@@ -48,24 +48,25 @@
|
||||
},
|
||||
"homepage": "https://github.com/ljharb/get-intrinsic#readme",
|
||||
"devDependencies": {
|
||||
"@ljharb/eslint-config": "^21.0.0",
|
||||
"aud": "^2.0.0",
|
||||
"@ljharb/eslint-config": "^21.0.1",
|
||||
"aud": "^2.0.2",
|
||||
"auto-changelog": "^2.4.0",
|
||||
"call-bind": "^1.0.2",
|
||||
"es-abstract": "^1.20.2",
|
||||
"es-abstract": "^1.21.2",
|
||||
"es-value-fixtures": "^1.4.2",
|
||||
"eslint": "=8.8.0",
|
||||
"evalmd": "^0.0.19",
|
||||
"for-each": "^0.3.3",
|
||||
"gopd": "^1.0.1",
|
||||
"make-async-function": "^1.0.0",
|
||||
"make-async-generator-function": "^1.0.0",
|
||||
"make-generator-function": "^2.0.0",
|
||||
"mock-property": "^1.0.0",
|
||||
"npmignore": "^0.3.0",
|
||||
"nyc": "^10.3.2",
|
||||
"object-inspect": "^1.12.2",
|
||||
"object-inspect": "^1.12.3",
|
||||
"safe-publish-latest": "^2.0.0",
|
||||
"tape": "^5.6.0"
|
||||
"tape": "^5.6.3"
|
||||
},
|
||||
"auto-changelog": {
|
||||
"output": "CHANGELOG.md",
|
||||
@@ -78,6 +79,7 @@
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
"has-proto": "^1.0.1",
|
||||
"has-symbols": "^1.0.3"
|
||||
},
|
||||
"testling": {
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ var mockProperty = require('mock-property');
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
var v = require('es-value-fixtures');
|
||||
var $gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');
|
||||
var $gOPD = require('gopd');
|
||||
var DefinePropertyOrThrow = require('es-abstract/2021/DefinePropertyOrThrow');
|
||||
|
||||
var $isProto = callBound('%Object.prototype.isPrototypeOf%');
|
||||
|
||||
+14
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [v1.1.12](https://github.com/inspect-js/is-typed-array/compare/v1.1.11...v1.1.12) - 2023-07-17
|
||||
|
||||
### Commits
|
||||
|
||||
- [Refactor] use `which-typed-array` for all internals [`7619405`](https://github.com/inspect-js/is-typed-array/commit/761940532de595f6721fed101b02814dcfa7fe4e)
|
||||
|
||||
## [v1.1.11](https://github.com/inspect-js/is-typed-array/compare/v1.1.10...v1.1.11) - 2023-07-17
|
||||
|
||||
### Commits
|
||||
|
||||
- [Fix] `node < v0.6` lacks proper Object toString behavior [`c94b90d`](https://github.com/inspect-js/is-typed-array/commit/c94b90dc6bc457783d6f8cc208415a49da0933b7)
|
||||
- [Robustness] use `call-bind` [`573b00b`](https://github.com/inspect-js/is-typed-array/commit/573b00b8deec42ac1ac262415e442ea0b7e1c96b)
|
||||
- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `object-inspect`, `tape` [`c88c2d4`](https://github.com/inspect-js/is-typed-array/commit/c88c2d479976110478fa4038fe8921251c06a163)
|
||||
|
||||
## [v1.1.10](https://github.com/inspect-js/is-typed-array/compare/v1.1.9...v1.1.10) - 2022-11-02
|
||||
|
||||
### Commits
|
||||
|
||||
+2
-55
@@ -1,60 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var forEach = require('for-each');
|
||||
var availableTypedArrays = require('available-typed-arrays');
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $toString = callBound('Object.prototype.toString');
|
||||
var hasToStringTag = require('has-tostringtag/shams')();
|
||||
var gOPD = require('gopd');
|
||||
|
||||
var g = typeof globalThis === 'undefined' ? global : globalThis;
|
||||
var typedArrays = availableTypedArrays();
|
||||
|
||||
var $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {
|
||||
for (var i = 0; i < array.length; i += 1) {
|
||||
if (array[i] === value) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
var $slice = callBound('String.prototype.slice');
|
||||
var toStrTags = {};
|
||||
var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');
|
||||
if (hasToStringTag && gOPD && getPrototypeOf) {
|
||||
forEach(typedArrays, function (typedArray) {
|
||||
var arr = new g[typedArray]();
|
||||
if (Symbol.toStringTag in arr) {
|
||||
var proto = getPrototypeOf(arr);
|
||||
var descriptor = gOPD(proto, Symbol.toStringTag);
|
||||
if (!descriptor) {
|
||||
var superProto = getPrototypeOf(proto);
|
||||
descriptor = gOPD(superProto, Symbol.toStringTag);
|
||||
}
|
||||
toStrTags[typedArray] = descriptor.get;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var tryTypedArrays = function tryAllTypedArrays(value) {
|
||||
var anyTrue = false;
|
||||
forEach(toStrTags, function (getter, typedArray) {
|
||||
if (!anyTrue) {
|
||||
try {
|
||||
anyTrue = getter.call(value) === typedArray;
|
||||
} catch (e) { /**/ }
|
||||
}
|
||||
});
|
||||
return anyTrue;
|
||||
};
|
||||
var whichTypedArray = require('which-typed-array');
|
||||
|
||||
module.exports = function isTypedArray(value) {
|
||||
if (!value || typeof value !== 'object') { return false; }
|
||||
if (!hasToStringTag || !(Symbol.toStringTag in value)) {
|
||||
var tag = $slice($toString(value), 8, -1);
|
||||
return $indexOf(typedArrays, tag) > -1;
|
||||
}
|
||||
if (!gOPD) { return false; }
|
||||
return tryTypedArrays(value);
|
||||
return !!whichTypedArray(value);
|
||||
};
|
||||
|
||||
+8
-10
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "is-typed-array",
|
||||
"version": "1.1.10",
|
||||
"version": "1.1.12",
|
||||
"author": {
|
||||
"name": "Jordan Harband",
|
||||
"email": "ljharb@gmail.com",
|
||||
@@ -58,27 +58,25 @@
|
||||
"@@toStringTag"
|
||||
],
|
||||
"dependencies": {
|
||||
"available-typed-arrays": "^1.0.5",
|
||||
"call-bind": "^1.0.2",
|
||||
"for-each": "^0.3.3",
|
||||
"gopd": "^1.0.1",
|
||||
"has-tostringtag": "^1.0.0"
|
||||
"which-typed-array": "^1.1.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ljharb/eslint-config": "^21.0.0",
|
||||
"aud": "^2.0.1",
|
||||
"@ljharb/eslint-config": "^21.1.0",
|
||||
"aud": "^2.0.3",
|
||||
"auto-changelog": "^2.4.0",
|
||||
"eslint": "=8.8.0",
|
||||
"evalmd": "^0.0.19",
|
||||
"for-each": "^0.3.3",
|
||||
"has-tostringtag": "^1.0.0",
|
||||
"in-publish": "^2.0.1",
|
||||
"is-callable": "^1.2.7",
|
||||
"make-arrow-function": "^1.2.0",
|
||||
"make-generator-function": "^2.0.0",
|
||||
"npmignore": "^0.3.0",
|
||||
"nyc": "^10.3.2",
|
||||
"object-inspect": "^1.12.2",
|
||||
"object-inspect": "^1.12.3",
|
||||
"safe-publish-latest": "^2.0.0",
|
||||
"tape": "^5.6.1"
|
||||
"tape": "^5.6.5"
|
||||
},
|
||||
"testling": {
|
||||
"files": "test/index.js",
|
||||
|
||||
+15
@@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [v1.1.11](https://github.com/inspect-js/which-typed-array/compare/v1.1.10...v1.1.11) - 2023-07-17
|
||||
|
||||
### Commits
|
||||
|
||||
- [Fix] `node < v0.6` lacks proper Object toString behavior [`b8fd654`](https://github.com/inspect-js/which-typed-array/commit/b8fd65479c0bd18385378cfae79750ebf7cb6ee7)
|
||||
- [Dev Deps] update `tape` [`e1734c9`](https://github.com/inspect-js/which-typed-array/commit/e1734c99d79880ab11efa55220498a7a1e887834)
|
||||
|
||||
## [v1.1.10](https://github.com/inspect-js/which-typed-array/compare/v1.1.9...v1.1.10) - 2023-07-10
|
||||
|
||||
### Commits
|
||||
|
||||
- [actions] update rebase action to use reusable workflow [`2c10582`](https://github.com/inspect-js/which-typed-array/commit/2c105820d77274c079cb6d040cb348396e516ef5)
|
||||
- [Robustness] use `call-bind` [`b2335fd`](https://github.com/inspect-js/which-typed-array/commit/b2335fdfca80840995eea5e6fcfffc6d712279a1)
|
||||
- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`ad5e41b`](https://github.com/inspect-js/which-typed-array/commit/ad5e41ba18e7d23af1f9b211215c43a64bf75d70)
|
||||
|
||||
## [v1.1.9](https://github.com/inspect-js/which-typed-array/compare/v1.1.8...v1.1.9) - 2022-11-02
|
||||
|
||||
### Commits
|
||||
|
||||
+56
-22
@@ -2,6 +2,7 @@
|
||||
|
||||
var forEach = require('for-each');
|
||||
var availableTypedArrays = require('available-typed-arrays');
|
||||
var callBind = require('call-bind');
|
||||
var callBound = require('call-bind/callBound');
|
||||
var gOPD = require('gopd');
|
||||
|
||||
@@ -12,44 +13,77 @@ var g = typeof globalThis === 'undefined' ? global : globalThis;
|
||||
var typedArrays = availableTypedArrays();
|
||||
|
||||
var $slice = callBound('String.prototype.slice');
|
||||
var toStrTags = {};
|
||||
var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');
|
||||
|
||||
var $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {
|
||||
for (var i = 0; i < array.length; i += 1) {
|
||||
if (array[i] === value) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
var cache = { __proto__: null };
|
||||
if (hasToStringTag && gOPD && getPrototypeOf) {
|
||||
forEach(typedArrays, function (typedArray) {
|
||||
if (typeof g[typedArray] === 'function') {
|
||||
var arr = new g[typedArray]();
|
||||
if (Symbol.toStringTag in arr) {
|
||||
var proto = getPrototypeOf(arr);
|
||||
var descriptor = gOPD(proto, Symbol.toStringTag);
|
||||
if (!descriptor) {
|
||||
var superProto = getPrototypeOf(proto);
|
||||
descriptor = gOPD(superProto, Symbol.toStringTag);
|
||||
}
|
||||
toStrTags[typedArray] = descriptor.get;
|
||||
var arr = new g[typedArray]();
|
||||
if (Symbol.toStringTag in arr) {
|
||||
var proto = getPrototypeOf(arr);
|
||||
var descriptor = gOPD(proto, Symbol.toStringTag);
|
||||
if (!descriptor) {
|
||||
var superProto = getPrototypeOf(proto);
|
||||
descriptor = gOPD(superProto, Symbol.toStringTag);
|
||||
}
|
||||
cache['$' + typedArray] = callBind(descriptor.get);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
forEach(typedArrays, function (typedArray) {
|
||||
var arr = new g[typedArray]();
|
||||
cache['$' + typedArray] = callBind(arr.slice);
|
||||
});
|
||||
}
|
||||
|
||||
var tryTypedArrays = function tryAllTypedArrays(value) {
|
||||
var foundName = false;
|
||||
forEach(toStrTags, function (getter, typedArray) {
|
||||
if (!foundName) {
|
||||
var found = false;
|
||||
forEach(cache, function (getter, typedArray) {
|
||||
if (!found) {
|
||||
try {
|
||||
var name = getter.call(value);
|
||||
if (name === typedArray) {
|
||||
foundName = name;
|
||||
if ('$' + getter(value) === typedArray) {
|
||||
found = $slice(typedArray, 1);
|
||||
}
|
||||
} catch (e) {}
|
||||
} catch (e) { /**/ }
|
||||
}
|
||||
});
|
||||
return foundName;
|
||||
return found;
|
||||
};
|
||||
|
||||
var isTypedArray = require('is-typed-array');
|
||||
var trySlices = function tryAllSlices(value) {
|
||||
var found = false;
|
||||
forEach(cache, function (getter, name) {
|
||||
if (!found) {
|
||||
try {
|
||||
getter(value);
|
||||
found = $slice(name, 1);
|
||||
} catch (e) { /**/ }
|
||||
}
|
||||
});
|
||||
return found;
|
||||
};
|
||||
|
||||
module.exports = function whichTypedArray(value) {
|
||||
if (!isTypedArray(value)) { return false; }
|
||||
if (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }
|
||||
if (!value || typeof value !== 'object') { return false; }
|
||||
if (!hasToStringTag) {
|
||||
var tag = $slice($toString(value), 8, -1);
|
||||
if ($indexOf(typedArrays, tag) > -1) {
|
||||
return tag;
|
||||
}
|
||||
if (tag !== 'Object') {
|
||||
return false;
|
||||
}
|
||||
// node < 0.6 hits here on real Typed Arrays
|
||||
return trySlices(value);
|
||||
}
|
||||
if (!gOPD) { return null; } // unknown engine
|
||||
return tryTypedArrays(value);
|
||||
};
|
||||
|
||||
+5
-6
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "which-typed-array",
|
||||
"version": "1.1.9",
|
||||
"version": "1.1.11",
|
||||
"author": {
|
||||
"name": "Jordan Harband",
|
||||
"email": "ljharb@gmail.com",
|
||||
@@ -62,12 +62,11 @@
|
||||
"call-bind": "^1.0.2",
|
||||
"for-each": "^0.3.3",
|
||||
"gopd": "^1.0.1",
|
||||
"has-tostringtag": "^1.0.0",
|
||||
"is-typed-array": "^1.1.10"
|
||||
"has-tostringtag": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ljharb/eslint-config": "^21.0.0",
|
||||
"aud": "^2.0.1",
|
||||
"@ljharb/eslint-config": "^21.1.0",
|
||||
"aud": "^2.0.3",
|
||||
"auto-changelog": "^2.4.0",
|
||||
"eslint": "=8.8.0",
|
||||
"in-publish": "^2.0.1",
|
||||
@@ -77,7 +76,7 @@
|
||||
"npmignore": "^0.3.0",
|
||||
"nyc": "^10.3.2",
|
||||
"safe-publish-latest": "^2.0.0",
|
||||
"tape": "^5.6.1"
|
||||
"tape": "^5.6.5"
|
||||
},
|
||||
"testling": {
|
||||
"files": "test/index.js",
|
||||
|
||||
+1
-1
@@ -90,7 +90,7 @@ test('Typed Arrays', function (t) {
|
||||
var TypedArray = global[typedArray];
|
||||
if (isCallable(TypedArray)) {
|
||||
var arr = new TypedArray(10);
|
||||
t.equal(typedArray, whichTypedArray(arr), 'new ' + typedArray + '(10) is typed array of type ' + typedArray);
|
||||
t.equal(whichTypedArray(arr), typedArray, 'new ' + typedArray + '(10) is typed array of type ' + typedArray);
|
||||
} else {
|
||||
t.comment('# SKIP ' + typedArray + ' is not supported');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user