Update internal buffer types (#1862)

* Update internal buffer types

* u8aToBuffer/isBuffer does not require Buffer type

* Re-add BufferObj equals
This commit is contained in:
Jaco
2023-08-16 12:22:18 +03:00
committed by GitHub
parent 4ff56f5cfe
commit a8df82dfe0
6 changed files with 188 additions and 29 deletions
+4 -2
View File
@@ -4,9 +4,11 @@
Changes:
- Add support for Ledger `signRaw`
- Upgrade dependencies to latest stable versions
- Add support for Ledger `signRaw`, as exposed by lower-level
- Update code to use `?.` shortcuts where appropriate
- Adjust `u8aToBuffer` & `isBuffer` typings to not require `Buffer`
- Use `stringify/import.meta.url` helpers in specs
- Upgrade dependencies to latest stable versions
## 12.3.2 Jun 12, 2023
+1 -1
View File
@@ -37,7 +37,7 @@
"test:one": "polkadot-dev-run-test --env browser"
},
"devDependencies": {
"@polkadot/dev": "^0.76.14",
"@polkadot/dev": "^0.76.15",
"@types/node": "^20.5.0"
},
"resolutions": {
+1 -1
View File
@@ -22,7 +22,7 @@ import { isFunction } from './function.js';
* console.log('isBuffer', isBuffer(Buffer.from([]))); // => true
* ```
*/
export function isBuffer (value: unknown): value is Buffer {
export function isBuffer <T = BufferObj> (value: unknown): value is T {
// we do check a function first, since it is slightly faster than isBuffer itself
return hasBuffer && !!value && isFunction((value as unknown as BufferObj).readDoubleLE) && (xglobal.Buffer as unknown as BufferObjClass).isBuffer(value);
}
+8
View File
@@ -79,14 +79,22 @@ export type HexString = `0x${string}`;
// BufferObj interface compatible with Buffer since we don't want to require
// references to the Buffer types from the node typings
//
// Caveat: the references still do sneak in in the d.ts files, specifically
// inside u8a/toBuffer & is/buffer (but not in compiled outputs)
export interface BufferObj extends Uint8Array {
// Possibly used externally via type imports
equals: (otherBuffer: Uint8Array) => boolean;
// As used in is/buffer
readDoubleLE: (offset?: number) => number;
}
// We define a scappy low-level interface to mock Buffer
// (this removes the need for the node typings in built bundles)
export interface BufferObjClass extends Class<BufferObj> {
// As used in u8a/toBuffer
from: <T = BufferObj>(value: unknown) => T;
// As used in is/buffer
isBuffer: (value: unknown) => boolean;
}
+6 -2
View File
@@ -1,6 +1,10 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { BufferObj, BufferObjClass } from '../types.js';
import { xglobal } from '@polkadot/x-global';
/**
* @name u8aToBuffer
* @summary Creates a Buffer object from a hex string.
@@ -15,6 +19,6 @@
* console.log('Buffer', u8aToBuffer(new Uint8Array([1, 2, 3])));
* ```
*/
export function u8aToBuffer (value?: Uint8Array | null): Buffer {
return Buffer.from(value || []);
export function u8aToBuffer <T = BufferObj> (value?: Uint8Array | null): T {
return (xglobal.Buffer as unknown as BufferObjClass).from(value || []);
}
+168 -23
View File
@@ -463,34 +463,34 @@ __metadata:
languageName: node
linkType: hard
"@polkadot/dev-test@npm:^0.76.14":
version: 0.76.14
resolution: "@polkadot/dev-test@npm:0.76.14"
"@polkadot/dev-test@npm:^0.76.15":
version: 0.76.15
resolution: "@polkadot/dev-test@npm:0.76.15"
dependencies:
jsdom: ^22.1.0
tslib: ^2.6.1
checksum: 90865d39f1076ed857f15a5b1d30d69cf405cf3656e0ec536b24c23764f9e8b155efb6f694bf682942614c5cd3234ed3c7a5e8bf05c7bba3b415c558b366dc8c
checksum: a19177c0811f0a992f23639d49d5cc4fa7d4971a2232d951829d5ce13ba914a0ac08ea3a351cddd6895bdfeedca3fbeee222e1529cf287918e676f62725c4902
languageName: node
linkType: hard
"@polkadot/dev-ts@npm:^0.76.14":
version: 0.76.14
resolution: "@polkadot/dev-ts@npm:0.76.14"
"@polkadot/dev-ts@npm:^0.76.15":
version: 0.76.15
resolution: "@polkadot/dev-ts@npm:0.76.15"
dependencies:
json5: ^2.2.3
tslib: ^2.6.1
typescript: ^5.1.6
checksum: e22db62808ccda3d002ff2c1b798982309900304ae7aee1547f27fc80ab0cf807ecc63782e2a20ed17937365a418da71f22ca784d1909929d8509a9d79a7fddd
checksum: 939f80bb9e215adf32f221a9f9069f497690374bfbdf0a59aa3b95d2042f4c304b2cb054f6204411f4bcb88e1781a12c426d29a11b488b529414f37030429680
languageName: node
linkType: hard
"@polkadot/dev@npm:^0.76.14":
version: 0.76.14
resolution: "@polkadot/dev@npm:0.76.14"
"@polkadot/dev@npm:^0.76.15":
version: 0.76.15
resolution: "@polkadot/dev@npm:0.76.15"
dependencies:
"@eslint/js": ^8.47.0
"@polkadot/dev-test": ^0.76.14
"@polkadot/dev-ts": ^0.76.14
"@polkadot/dev-test": ^0.76.15
"@polkadot/dev-ts": ^0.76.15
"@rollup/plugin-alias": ^5.0.0
"@rollup/plugin-commonjs": ^25.0.4
"@rollup/plugin-dynamic-import-vars": ^2.0.5
@@ -511,7 +511,7 @@ __metadata:
eslint-plugin-jest: ^27.2.3
eslint-plugin-n: ^16.0.1
eslint-plugin-promise: ^6.1.1
eslint-plugin-react: ^7.33.1
eslint-plugin-react: ^7.33.2
eslint-plugin-react-hooks: ^4.6.0
eslint-plugin-simple-import-sort: ^10.0.0
eslint-plugin-sort-destructure-keys: ^1.5.0
@@ -555,7 +555,7 @@ __metadata:
polkadot-exec-rollup: scripts/polkadot-exec-rollup.mjs
polkadot-exec-tsc: scripts/polkadot-exec-tsc.mjs
polkadot-exec-webpack: scripts/polkadot-exec-webpack.mjs
checksum: 05d8f61a8c7e855061f2849fdbc512b3caad4ba455f7e692656b572d39ef824724131c909856924409f46fde2f9db136763ec030c7cd076ea5cee341d086c07c
checksum: 0901aee6fab181968cdb3b60dee47c69de3c3832651a7388cb632f58acf28716105b8e57c8e2ade258930c3ae6e01376f7063f7b69c9ef74702f180c0f9eb3eb
languageName: node
linkType: hard
@@ -2098,6 +2098,15 @@ __metadata:
languageName: node
linkType: hard
"asynciterator.prototype@npm:^1.0.0":
version: 1.0.0
resolution: "asynciterator.prototype@npm:1.0.0"
dependencies:
has-symbols: ^1.0.3
checksum: e8ebfd9493ac651cf9b4165e9d64030b3da1d17181bb1963627b59e240cdaf021d9b59d44b827dc1dde4e22387ec04c2d0f8720cf58a1c282e34e40cc12721b3
languageName: node
linkType: hard
"asynckit@npm:^0.4.0":
version: 0.4.0
resolution: "asynckit@npm:0.4.0"
@@ -3517,7 +3526,7 @@ __metadata:
languageName: node
linkType: hard
"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4, es-abstract@npm:^1.21.2":
"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4, es-abstract@npm:^1.21.2, es-abstract@npm:^1.21.3":
version: 1.22.1
resolution: "es-abstract@npm:1.22.1"
dependencies:
@@ -3564,6 +3573,24 @@ __metadata:
languageName: node
linkType: hard
"es-iterator-helpers@npm:^1.0.12":
version: 1.0.12
resolution: "es-iterator-helpers@npm:1.0.12"
dependencies:
asynciterator.prototype: ^1.0.0
es-abstract: ^1.21.3
es-set-tostringtag: ^2.0.1
function-bind: ^1.1.1
globalthis: ^1.0.3
has-proto: ^1.0.1
has-symbols: ^1.0.3
internal-slot: ^1.0.5
iterator.prototype: ^1.1.0
safe-array-concat: ^1.0.0
checksum: df1800a64be755e61718d2e62eef17c22590ed668c44eb3a5c9b78f874e8e01bfa7ba27a0f258b1322f577c2b2032fec194aa20912f7417ddc580c4ec31882e4
languageName: node
linkType: hard
"es-module-lexer@npm:^1.2.1":
version: 1.2.1
resolution: "es-module-lexer@npm:1.2.1"
@@ -3837,14 +3864,15 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-react@npm:^7.33.1":
version: 7.33.1
resolution: "eslint-plugin-react@npm:7.33.1"
"eslint-plugin-react@npm:^7.33.2":
version: 7.33.2
resolution: "eslint-plugin-react@npm:7.33.2"
dependencies:
array-includes: ^3.1.6
array.prototype.flatmap: ^1.3.1
array.prototype.tosorted: ^1.1.1
doctrine: ^2.1.0
es-iterator-helpers: ^1.0.12
estraverse: ^5.3.0
jsx-ast-utils: ^2.4.1 || ^3.0.0
minimatch: ^3.1.2
@@ -3858,7 +3886,7 @@ __metadata:
string.prototype.matchall: ^4.0.8
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
checksum: 0427bd24acb87422b7298686203167123ba289ba563384983f3d99fad7817eae7f63157fd2e9b868bdcf0760719c319ab1e22a44764a98302034b0c844763e57
checksum: b4c3d76390b0ae6b6f9fed78170604cc2c04b48e6778a637db339e8e3911ec9ef22510b0ae77c429698151d0f1b245f282177f384105b6830e7b29b9c9b26610
languageName: node
linkType: hard
@@ -5367,6 +5395,15 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"is-async-function@npm:^2.0.0":
version: 2.0.0
resolution: "is-async-function@npm:2.0.0"
dependencies:
has-tostringtag: ^1.0.0
checksum: e3471d95e6c014bf37cad8a93f2f4b6aac962178e0a5041e8903147166964fdc1c5c1d2ef87e86d77322c370ca18f2ea004fa7420581fa747bcaf7c223069dbd
languageName: node
linkType: hard
"is-bigint@npm:^1.0.1":
version: 1.0.1
resolution: "is-bigint@npm:1.0.1"
@@ -5428,7 +5465,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"is-date-object@npm:^1.0.1":
"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5":
version: 1.0.5
resolution: "is-date-object@npm:1.0.5"
dependencies:
@@ -5453,6 +5490,15 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"is-finalizationregistry@npm:^1.0.2":
version: 1.0.2
resolution: "is-finalizationregistry@npm:1.0.2"
dependencies:
call-bind: ^1.0.2
checksum: 4f243a8e06228cd45bdab8608d2cb7abfc20f6f0189c8ac21ea8d603f1f196eabd531ce0bb8e08cbab047e9845ef2c191a3761c9a17ad5cabf8b35499c4ad35d
languageName: node
linkType: hard
"is-fullwidth-code-point@npm:^1.0.0":
version: 1.0.0
resolution: "is-fullwidth-code-point@npm:1.0.0"
@@ -5476,6 +5522,15 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"is-generator-function@npm:^1.0.10":
version: 1.0.10
resolution: "is-generator-function@npm:1.0.10"
dependencies:
has-tostringtag: ^1.0.0
checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b
languageName: node
linkType: hard
"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1":
version: 4.0.3
resolution: "is-glob@npm:4.0.3"
@@ -5502,6 +5557,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"is-map@npm:^2.0.1":
version: 2.0.2
resolution: "is-map@npm:2.0.2"
checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728
languageName: node
linkType: hard
"is-module@npm:^1.0.0":
version: 1.0.0
resolution: "is-module@npm:1.0.0"
@@ -5628,6 +5690,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"is-set@npm:^2.0.1":
version: 2.0.2
resolution: "is-set@npm:2.0.2"
checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57
languageName: node
linkType: hard
"is-shared-array-buffer@npm:^1.0.2":
version: 1.0.2
resolution: "is-shared-array-buffer@npm:1.0.2"
@@ -5699,6 +5768,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"is-weakmap@npm:^2.0.1":
version: 2.0.1
resolution: "is-weakmap@npm:2.0.1"
checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6
languageName: node
linkType: hard
"is-weakref@npm:^1.0.2":
version: 1.0.2
resolution: "is-weakref@npm:1.0.2"
@@ -5708,6 +5784,16 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"is-weakset@npm:^2.0.1":
version: 2.0.2
resolution: "is-weakset@npm:2.0.2"
dependencies:
call-bind: ^1.0.2
get-intrinsic: ^1.1.1
checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367
languageName: node
linkType: hard
"is-wsl@npm:^2.2.0":
version: 2.2.0
resolution: "is-wsl@npm:2.2.0"
@@ -5759,6 +5845,19 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"iterator.prototype@npm:^1.1.0":
version: 1.1.0
resolution: "iterator.prototype@npm:1.1.0"
dependencies:
define-properties: ^1.1.4
get-intrinsic: ^1.1.3
has-symbols: ^1.0.3
has-tostringtag: ^1.0.0
reflect.getprototypeof: ^1.0.3
checksum: 462fe16c770affeb9c08620b13fc98d38307335821f4fabd489f491d38c79855c6a93d4b56f6146eaa56711f61690aa5c7eb0ce8586c95145d2f665a3834d916
languageName: node
linkType: hard
"jest-worker@npm:^27.4.5":
version: 27.5.1
resolution: "jest-worker@npm:27.5.1"
@@ -7498,6 +7597,20 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"reflect.getprototypeof@npm:^1.0.3":
version: 1.0.3
resolution: "reflect.getprototypeof@npm:1.0.3"
dependencies:
call-bind: ^1.0.2
define-properties: ^1.1.4
es-abstract: ^1.20.4
get-intrinsic: ^1.1.1
globalthis: ^1.0.3
which-builtin-type: ^1.1.3
checksum: 843e2506c013da66f83635f943c5bd41243bc6c7703298531cfb16eb6baaefd92f83031fa37140ad31c4edc86938b6eb385e6fc85bf1628e79348ed49e044f3d
languageName: node
linkType: hard
"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0":
version: 1.5.0
resolution: "regexp.prototype.flags@npm:1.5.0"
@@ -7778,7 +7891,7 @@ fsevents@~2.3.2:
version: 0.0.0-use.local
resolution: "root-workspace-0b6124@workspace:."
dependencies:
"@polkadot/dev": ^0.76.14
"@polkadot/dev": ^0.76.15
"@types/node": ^20.5.0
languageName: unknown
linkType: soft
@@ -9404,7 +9517,39 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11":
"which-builtin-type@npm:^1.1.3":
version: 1.1.3
resolution: "which-builtin-type@npm:1.1.3"
dependencies:
function.prototype.name: ^1.1.5
has-tostringtag: ^1.0.0
is-async-function: ^2.0.0
is-date-object: ^1.0.5
is-finalizationregistry: ^1.0.2
is-generator-function: ^1.0.10
is-regex: ^1.1.4
is-weakref: ^1.0.2
isarray: ^2.0.5
which-boxed-primitive: ^1.0.2
which-collection: ^1.0.1
which-typed-array: ^1.1.9
checksum: 43730f7d8660ff9e33d1d3f9f9451c4784265ee7bf222babc35e61674a11a08e1c2925019d6c03154fcaaca4541df43abe35d2720843b9b4cbcebdcc31408f36
languageName: node
linkType: hard
"which-collection@npm:^1.0.1":
version: 1.0.1
resolution: "which-collection@npm:1.0.1"
dependencies:
is-map: ^2.0.1
is-set: ^2.0.1
is-weakmap: ^2.0.1
is-weakset: ^2.0.1
checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c
languageName: node
linkType: hard
"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.9":
version: 1.1.11
resolution: "which-typed-array@npm:1.1.11"
dependencies: