which-typed-array
Advanced tools
Comparing version 1.1.14 to 1.1.15
@@ -8,2 +8,13 @@ # Changelog | ||
## [v1.1.15](https://github.com/inspect-js/which-typed-array/compare/v1.1.14...v1.1.15) - 2024-03-10 | ||
### Commits | ||
- [types] use a namespace; improve type [`f42bec3`](https://github.com/inspect-js/which-typed-array/commit/f42bec34d5c47bd9e4ab1b48dcde60c09c666712) | ||
- [types] use shared config [`464a9e3`](https://github.com/inspect-js/which-typed-array/commit/464a9e358c2597253c747970b12032406a19b8d2) | ||
- [actions] remove redundant finisher; use reusable workflow [`d114ee8`](https://github.com/inspect-js/which-typed-array/commit/d114ee83ceb6c7898386f4b5935a3ed9e2ec61e4) | ||
- [Dev Deps] update `@types/node`, `tape`, `typescript`; add `@arethetypeswrong/cli` [`9cc63d8`](https://github.com/inspect-js/which-typed-array/commit/9cc63d8635e80ce6dabcb352d23050111040d747) | ||
- [types] add a helpful hover description [`29ccf8d`](https://github.com/inspect-js/which-typed-array/commit/29ccf8dab0f805cdac6ec56d7b9cc27476708273) | ||
- [Deps] update `available-typed-arrays`, `call-bind`, `has-tostringtag` [`7ecfd8e`](https://github.com/inspect-js/which-typed-array/commit/7ecfd8e29d09f8708f7cab7cc41fea9ae5a20867) | ||
## [v1.1.14](https://github.com/inspect-js/which-typed-array/compare/v1.1.13...v1.1.14) - 2024-02-01 | ||
@@ -10,0 +21,0 @@ |
@@ -1,16 +0,61 @@ | ||
type TypedArrayName = | ||
| 'Int8Array' | ||
| 'Uint8Array' | ||
| 'Uint8ClampedArray' | ||
| 'Int16Array' | ||
| 'Uint16Array' | ||
| 'Int32Array' | ||
| 'Uint32Array' | ||
| 'Float32Array' | ||
| 'Float64Array' | ||
| 'BigInt64Array' | ||
| 'BigUint64Array'; | ||
/** | ||
* Determines the type of the given collection, or returns false. | ||
* | ||
* @param {unknown} value The potential collection | ||
* @returns {TypedArrayName | false | null} 'Int8Array' | 'Uint8Array' | 'Uint8ClampedArray' | 'Int16Array' | 'Uint16Array' | 'Int32Array' | 'Uint32Array' | 'Float32Array' | 'Float64Array' | 'BigInt64Array' | 'BigUint64Array' | false | null | ||
*/ | ||
declare function whichTypedArray(value: Int8Array): 'Int8Array'; | ||
declare function whichTypedArray(value: Uint8Array): 'Uint8Array'; | ||
declare function whichTypedArray(value: Uint8ClampedArray): 'Uint8ClampedArray'; | ||
declare function whichTypedArray(value: Int16Array): 'Int16Array'; | ||
declare function whichTypedArray(value: Uint16Array): 'Uint16Array'; | ||
declare function whichTypedArray(value: Int32Array): 'Int32Array'; | ||
declare function whichTypedArray(value: Uint32Array): 'Uint32Array'; | ||
declare function whichTypedArray(value: Float32Array): 'Float32Array'; | ||
declare function whichTypedArray(value: Float64Array): 'Float64Array'; | ||
declare function whichTypedArray(value: BigInt64Array): 'BigInt64Array'; | ||
declare function whichTypedArray(value: BigUint64Array): 'BigUint64Array'; | ||
declare function whichTypedArray(value: unknown): false | null; | ||
declare function whichTypedArray(value: unknown): TypedArrayName | false | null; | ||
declare namespace whichTypedArray { | ||
type TypedArrayName = | ||
| 'Int8Array' | ||
| 'Uint8Array' | ||
| 'Uint8ClampedArray' | ||
| 'Int16Array' | ||
| 'Uint16Array' | ||
| 'Int32Array' | ||
| 'Uint32Array' | ||
| 'Float32Array' | ||
| 'Float64Array' | ||
| 'BigInt64Array' | ||
| 'BigUint64Array'; | ||
export = whichTypedArray; | ||
type TypedArray = | ||
| Int8Array | ||
| Uint8Array | ||
| Uint8ClampedArray | ||
| Int16Array | ||
| Uint16Array | ||
| Int32Array | ||
| Uint32Array | ||
| Float32Array | ||
| Float64Array | ||
| BigInt64Array | ||
| BigUint64Array; | ||
type TypedArrayConstructor = | ||
| Int8ArrayConstructor | ||
| Uint8ArrayConstructor | ||
| Uint8ClampedArrayConstructor | ||
| Int16ArrayConstructor | ||
| Uint16ArrayConstructor | ||
| Int32ArrayConstructor | ||
| Uint32ArrayConstructor | ||
| Float32ArrayConstructor | ||
| Float64ArrayConstructor | ||
| BigInt64ArrayConstructor | ||
| BigUint64ArrayConstructor; | ||
} | ||
export = whichTypedArray; |
29
index.js
@@ -9,2 +9,3 @@ 'use strict'; | ||
/** @type {(O: object) => string} */ | ||
var $toString = callBound('Object.prototype.toString'); | ||
@@ -19,3 +20,4 @@ var hasToStringTag = require('has-tostringtag/shams')(); | ||
var $indexOf = callBound('Array.prototype.indexOf', true) || /** @type {(array: readonly unknown[], value: unknown) => keyof array} */ function indexOf(array, value) { | ||
/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */ | ||
var $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) { | ||
for (var i = 0; i < array.length; i += 1) { | ||
@@ -29,5 +31,4 @@ if (array[i] === value) { | ||
/** @typedef {Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array} TypedArray */ | ||
/** @typedef {'Int8Array' | 'Uint8Array' | 'Uint8ClampedArray' | 'Int16Array' | 'Uint16Array' | 'Int32Array' | 'Uint32Array' | 'Float32Array' | 'Float64Array' | 'BigInt64Array' | 'BigUint64Array'} TypedArrayName */ | ||
/** @type {{ [k in `\$${TypedArrayName}`]?: (receiver: TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call } & { __proto__: null }} */ | ||
/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */ | ||
/** @type {{ [k in `\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */ | ||
var cache = { __proto__: null }; | ||
@@ -61,9 +62,10 @@ if (hasToStringTag && gOPD && getPrototypeOf) { | ||
/** @type {import('.')} */ | ||
/** @type {(value: object) => false | import('.').TypedArrayName} */ | ||
var tryTypedArrays = function tryAllTypedArrays(value) { | ||
/** @type {ReturnType<tryAllTypedArrays>} */ var found = false; | ||
/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false; | ||
forEach( | ||
// eslint-disable-next-line no-extra-parens | ||
/** @type {Record<`\$${TypedArrayName}`, typeof cache>} */ /** @type {any} */ (cache), | ||
/** @type {(getter: typeof cache, name: `\$${TypedArrayName}`) => void} */ function (getter, typedArray) { | ||
/** @type {Record<`\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache), | ||
/** @type {(getter: Getter, name: `\$${import('.').TypedArrayName}`) => void} */ | ||
function (getter, typedArray) { | ||
if (!found) { | ||
@@ -82,12 +84,12 @@ try { | ||
/** @type {import('.')} */ | ||
/** @type {(value: object) => false | import('.').TypedArrayName} */ | ||
var trySlices = function tryAllSlices(value) { | ||
/** @type {ReturnType<tryAllSlices>} */ var found = false; | ||
/** @type {ReturnType<typeof tryAllSlices>} */ var found = false; | ||
forEach( | ||
// eslint-disable-next-line no-extra-parens | ||
/** @type {any} */ (cache), | ||
/** @type {(getter: typeof cache, name: `\$${TypedArrayName}`) => void} */ function (getter, name) { | ||
/** @type {Record<`\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache), | ||
/** @type {(getter: typeof cache, name: `\$${import('.').TypedArrayName}`) => void} */ function (getter, name) { | ||
if (!found) { | ||
try { | ||
// @ts-expect-error TODO: fix | ||
// @ts-expect-error TODO: fix | ||
getter(value); | ||
@@ -106,2 +108,3 @@ found = $slice(name, 1); | ||
if (!hasToStringTag) { | ||
/** @type {string} */ | ||
var tag = $slice($toString(value), 8, -1); | ||
@@ -108,0 +111,0 @@ if ($indexOf(typedArrays, tag) > -1) { |
{ | ||
"name": "which-typed-array", | ||
"version": "1.1.14", | ||
"version": "1.1.15", | ||
"author": { | ||
@@ -34,3 +34,3 @@ "name": "Jordan Harband", | ||
"lint": "eslint --ext=js,mjs .", | ||
"postlint": "tsc -p .", | ||
"postlint": "tsc -p . && attw -P", | ||
"version": "auto-changelog && git add CHANGELOG.md", | ||
@@ -64,10 +64,12 @@ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" | ||
"dependencies": { | ||
"available-typed-arrays": "^1.0.6", | ||
"call-bind": "^1.0.5", | ||
"available-typed-arrays": "^1.0.7", | ||
"call-bind": "^1.0.7", | ||
"for-each": "^0.3.3", | ||
"gopd": "^1.0.1", | ||
"has-tostringtag": "^1.0.1" | ||
"has-tostringtag": "^1.0.2" | ||
}, | ||
"devDependencies": { | ||
"@arethetypeswrong/cli": "^0.15.1", | ||
"@ljharb/eslint-config": "^21.1.0", | ||
"@ljharb/tsconfig": "^0.2.0", | ||
"@types/call-bind": "^1.0.5", | ||
@@ -79,3 +81,3 @@ "@types/for-each": "^0.3.3", | ||
"@types/make-generator-function": "^2.0.3", | ||
"@types/node": "^20.11.14", | ||
"@types/node": "^20.11.25", | ||
"@types/tape": "^5.6.4", | ||
@@ -92,4 +94,4 @@ "aud": "^2.0.4", | ||
"safe-publish-latest": "^2.0.0", | ||
"tape": "^5.7.4", | ||
"typescript": "^5.4.0-dev.20240131" | ||
"tape": "^5.7.5", | ||
"typescript": "next" | ||
}, | ||
@@ -96,0 +98,0 @@ "testling": { |
@@ -93,8 +93,6 @@ 'use strict'; | ||
/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor | BigInt64ArrayConstructor | BigUint64ArrayConstructor} TypedArrayConstructor */ | ||
test('Typed Arrays', function (t) { | ||
forEach(typedArrayNames, function (typedArray) { | ||
// @ts-expect-error TODO: fix | ||
/** @type {TypedArrayConstructor} */ var TypedArray = global[typedArray]; | ||
/** @type {import('../').TypedArrayConstructor} */ var TypedArray = global[typedArray]; | ||
if (isCallable(TypedArray)) { | ||
@@ -101,0 +99,0 @@ var arr = new TypedArray(10); |
{ | ||
"extends": "@ljharb/tsconfig", | ||
"compilerOptions": { | ||
/* Visit https://aka.ms/tsconfig to read more about this file */ | ||
/* Projects */ | ||
/* Language and Environment */ | ||
"target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ | ||
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ | ||
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ | ||
"useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ | ||
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ | ||
/* Modules */ | ||
"module": "commonjs", /* Specify what module code is generated. */ | ||
// "rootDir": "./", /* Specify the root folder within your source files. */ | ||
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ | ||
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ | ||
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ | ||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ | ||
"typeRoots": ["types"], /* Specify multiple folders that act like './node_modules/@types'. */ | ||
"resolveJsonModule": true, /* Enable importing .json files. */ | ||
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ | ||
/* JavaScript Support */ | ||
"allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ | ||
"checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ | ||
"maxNodeModuleJsDepth": 0, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ | ||
/* Emit */ | ||
"declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ | ||
"declarationMap": true, /* Create sourcemaps for d.ts files. */ | ||
"noEmit": true, /* Disable emitting files from a compilation. */ | ||
/* Interop Constraints */ | ||
"allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ | ||
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ | ||
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ | ||
/* Type Checking */ | ||
"strict": true, /* Enable all strict type-checking options. */ | ||
/* Completeness */ | ||
//"skipLibCheck": true /* Skip type checking all .d.ts files. */ | ||
"target": "ES2021", | ||
}, | ||
@@ -46,0 +6,0 @@ "exclude": [ |
266
40709
23
Updatedcall-bind@^1.0.7
Updatedhas-tostringtag@^1.0.2