This plugin enforces any Uint8Array type declaration to explicitly define an ArrayBuffer as generic type
npm install @protontech/eslint-plugin-enforce-uint8array-arraybufferThis ESLint rule enforces that any Uint8Array type declaration explicitly includes as its generic parameter.
An auto-fix feature is also implemented.
Using ensures compatibility with WebCrypto APIs, Blobs, and other browser features, following a TS change in v5.9 the default ArrayBufferLike parameter is no longer guaranteed to be compatible with ArrayBuffer (due to differences with SharedArrayBuffer) .
``sh`
npm i --save-dev @protontech/eslint-plugin-enforce-uint8array-arraybuffer
Add the plugin and rule to your ESLint config:
`js
import pluginEnforceUint8ArrayArrayBuffer from '@protontech/eslint-plugin-enforce-uint8array-arraybuffer';
export default defineConfig({
plugins: {
'@protontech/enforce-uint8array-arraybuffer': pluginEnforceUint8ArrayArrayBuffer,
},
rules: {
'@protontech/enforce-uint8array-arraybuffer/enforce-uint8array-arraybuffer': 'error',
}
})
`
These usages are correct:
`ts`
const a = new Uint8Array(); // this is automatically instantiated as Uint8Array
function f(data: Uint8Array
type T = Promise
While these will trigger eslint errors (Uint8Array must be used as Uint8Array), but can be auto-fixed.
`ts`
function f(data: Uint8Array) {} // missingGeneric error
type T = Promise
If a generic argument is specified other than ArrayBuffer, the linter will also error (Uint8Array generic argument must be exactly 'ArrayBuffer'), but it will require manual resolution:
`ts``
function f(data: Uint8Array