@pezkuwi/util 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/package.json +49 -0
- package/src/array/chunk.spec.ts +29 -0
- package/src/array/chunk.ts +35 -0
- package/src/array/filter.spec.ts +20 -0
- package/src/array/filter.ts +24 -0
- package/src/array/flatten.spec.ts +33 -0
- package/src/array/flatten.ts +51 -0
- package/src/array/index.ts +14 -0
- package/src/array/range.spec.ts +29 -0
- package/src/array/range.ts +31 -0
- package/src/array/shuffle.spec.ts +39 -0
- package/src/array/shuffle.ts +27 -0
- package/src/array/unzip.spec.ts +14 -0
- package/src/array/unzip.ts +18 -0
- package/src/array/zip.spec.ts +26 -0
- package/src/array/zip.ts +17 -0
- package/src/assert.spec.ts +40 -0
- package/src/assert.ts +50 -0
- package/src/bi/consts.ts +112 -0
- package/src/bi/helpers.ts +23 -0
- package/src/bi/index.ts +16 -0
- package/src/bi/max.spec.ts +32 -0
- package/src/bi/min.spec.ts +26 -0
- package/src/bi/min.ts +16 -0
- package/src/bi/sqrt.spec.ts +59 -0
- package/src/bi/sqrt.ts +43 -0
- package/src/bi/toBigInt.spec.ts +69 -0
- package/src/bi/toBigInt.ts +33 -0
- package/src/bi/toHex.spec.ts +56 -0
- package/src/bi/toHex.ts +16 -0
- package/src/bi/toU8a.spec.ts +99 -0
- package/src/bi/toU8a.ts +72 -0
- package/src/bn/bn.ts +6 -0
- package/src/bn/consts.spec.ts +38 -0
- package/src/bn/consts.ts +112 -0
- package/src/bn/fromHex.spec.ts +15 -0
- package/src/bn/fromHex.ts +4 -0
- package/src/bn/index.ts +18 -0
- package/src/bn/max.spec.ts +32 -0
- package/src/bn/min.spec.ts +26 -0
- package/src/bn/min.ts +36 -0
- package/src/bn/sqrt.spec.ts +37 -0
- package/src/bn/sqrt.ts +50 -0
- package/src/bn/toBn.spec.ts +53 -0
- package/src/bn/toBn.ts +43 -0
- package/src/bn/toHex.spec.ts +50 -0
- package/src/bn/toHex.ts +27 -0
- package/src/bn/toU8a.spec.ts +60 -0
- package/src/bn/toU8a.ts +45 -0
- package/src/buffer/index.ts +8 -0
- package/src/buffer/toU8a.spec.ts +20 -0
- package/src/buffer/toU8a.ts +20 -0
- package/src/bundle.ts +35 -0
- package/src/compact/addLength.spec.ts +14 -0
- package/src/compact/addLength.ts +24 -0
- package/src/compact/defaults.ts +7 -0
- package/src/compact/fromU8a.spec.ts +84 -0
- package/src/compact/fromU8a.ts +109 -0
- package/src/compact/index.ts +28 -0
- package/src/compact/stripLength.spec.ts +17 -0
- package/src/compact/stripLength.ts +26 -0
- package/src/compact/toU8a.spec.ts +59 -0
- package/src/compact/toU8a.ts +53 -0
- package/src/compact/types.ts +4 -0
- package/src/detectPackage.spec.ts +110 -0
- package/src/detectPackage.ts +138 -0
- package/src/extractTime.spec.ts +21 -0
- package/src/extractTime.ts +71 -0
- package/src/float/index.ts +4 -0
- package/src/float/toU8a.spec.ts +52 -0
- package/src/float/toU8a.ts +30 -0
- package/src/format/formatBalance.spec.ts +296 -0
- package/src/format/formatBalance.ts +177 -0
- package/src/format/formatDate.spec.ts +17 -0
- package/src/format/formatDate.ts +22 -0
- package/src/format/formatDecimal.spec.ts +28 -0
- package/src/format/formatDecimal.ts +22 -0
- package/src/format/formatElapsed.spec.ts +44 -0
- package/src/format/formatElapsed.ts +35 -0
- package/src/format/formatNumber.spec.ts +60 -0
- package/src/format/formatNumber.ts +29 -0
- package/src/format/getSeparator.spec.ts +53 -0
- package/src/format/getSeparator.ts +15 -0
- package/src/format/index.ts +9 -0
- package/src/format/si.ts +52 -0
- package/src/has.spec.ts +12 -0
- package/src/has.ts +38 -0
- package/src/hex/addPrefix.spec.ts +32 -0
- package/src/hex/addPrefix.ts +26 -0
- package/src/hex/fixLength.spec.ts +38 -0
- package/src/hex/fixLength.ts +36 -0
- package/src/hex/hasPrefix.spec.ts +32 -0
- package/src/hex/hasPrefix.ts +24 -0
- package/src/hex/index.ts +16 -0
- package/src/hex/stripPrefix.spec.ts +44 -0
- package/src/hex/stripPrefix.ts +30 -0
- package/src/hex/toBigInt.spec.ts +74 -0
- package/src/hex/toBigInt.ts +19 -0
- package/src/hex/toBn.spec.ts +74 -0
- package/src/hex/toBn.ts +40 -0
- package/src/hex/toNumber.spec.ts +20 -0
- package/src/hex/toNumber.ts +24 -0
- package/src/hex/toString.spec.ts +20 -0
- package/src/hex/toString.ts +25 -0
- package/src/hex/toU8a.spec.ts +76 -0
- package/src/hex/toU8a.ts +68 -0
- package/src/hex/toU8aBuffer.spec.ts +38 -0
- package/src/hex/toU8aBuffer.ts +52 -0
- package/src/index.spec.ts +12 -0
- package/src/index.ts +6 -0
- package/src/is/array.spec.ts +20 -0
- package/src/is/array.ts +10 -0
- package/src/is/ascii.spec.ts +49 -0
- package/src/is/ascii.ts +52 -0
- package/src/is/bigInt.spec.ts +26 -0
- package/src/is/bigInt.ts +20 -0
- package/src/is/bn.spec.ts +21 -0
- package/src/is/bn.ts +23 -0
- package/src/is/boolean.spec.ts +26 -0
- package/src/is/boolean.ts +20 -0
- package/src/is/buffer.spec.ts +26 -0
- package/src/is/buffer.ts +28 -0
- package/src/is/childClass.spec.ts +36 -0
- package/src/is/childClass.ts +29 -0
- package/src/is/class.spec.ts +37 -0
- package/src/is/class.ts +12 -0
- package/src/is/codec.spec.ts +52 -0
- package/src/is/codec.ts +26 -0
- package/src/is/compact.spec.ts +27 -0
- package/src/is/compact.ts +19 -0
- package/src/is/error.spec.ts +20 -0
- package/src/is/error.ts +23 -0
- package/src/is/function.spec.ts +20 -0
- package/src/is/function.ts +23 -0
- package/src/is/helpers.ts +23 -0
- package/src/is/hex.spec.ts +77 -0
- package/src/is/hex.ts +36 -0
- package/src/is/index.ts +36 -0
- package/src/is/instanceOf.spec.ts +48 -0
- package/src/is/instanceOf.ts +24 -0
- package/src/is/ip.spec.ts +50 -0
- package/src/is/ip.ts +56 -0
- package/src/is/jsonObject.spec.ts +51 -0
- package/src/is/jsonObject.ts +45 -0
- package/src/is/null.spec.ts +20 -0
- package/src/is/null.ts +20 -0
- package/src/is/number.spec.ts +20 -0
- package/src/is/number.ts +20 -0
- package/src/is/object.spec.ts +32 -0
- package/src/is/object.ts +24 -0
- package/src/is/observable.spec.ts +26 -0
- package/src/is/observable.ts +22 -0
- package/src/is/promise.spec.ts +32 -0
- package/src/is/promise.ts +6 -0
- package/src/is/riscv.spec.ts +36 -0
- package/src/is/riscv.ts +27 -0
- package/src/is/string.spec.ts +32 -0
- package/src/is/string.ts +22 -0
- package/src/is/testChain.spec.ts +25 -0
- package/src/is/testChain.ts +12 -0
- package/src/is/toBigInt.spec.ts +22 -0
- package/src/is/toBigInt.ts +8 -0
- package/src/is/toBn.spec.ts +25 -0
- package/src/is/toBn.ts +8 -0
- package/src/is/u8a.spec.ts +42 -0
- package/src/is/u8a.ts +25 -0
- package/src/is/undefined.spec.ts +23 -0
- package/src/is/undefined.ts +21 -0
- package/src/is/utf8.spec.ts +42 -0
- package/src/is/utf8.ts +207 -0
- package/src/is/wasm.spec.ts +20 -0
- package/src/is/wasm.ts +17 -0
- package/src/lazy.spec.ts +71 -0
- package/src/lazy.ts +63 -0
- package/src/logger.spec.ts +188 -0
- package/src/logger.ts +160 -0
- package/src/memoize.spec.ts +79 -0
- package/src/memoize.ts +49 -0
- package/src/mod.ts +4 -0
- package/src/nextTick.ts +26 -0
- package/src/noop.ts +16 -0
- package/src/number/index.ts +9 -0
- package/src/number/toHex.spec.ts +44 -0
- package/src/number/toHex.ts +27 -0
- package/src/number/toU8a.spec.ts +50 -0
- package/src/number/toU8a.ts +25 -0
- package/src/object/clear.spec.ts +14 -0
- package/src/object/clear.ts +16 -0
- package/src/object/copy.spec.ts +17 -0
- package/src/object/copy.ts +12 -0
- package/src/object/entries.spec.ts +20 -0
- package/src/object/entries.ts +12 -0
- package/src/object/index.ts +10 -0
- package/src/object/keys.spec.ts +19 -0
- package/src/object/keys.ts +10 -0
- package/src/object/property.spec.ts +149 -0
- package/src/object/property.ts +39 -0
- package/src/object/spread.spec.ts +36 -0
- package/src/object/spread.ts +38 -0
- package/src/object/values.spec.ts +19 -0
- package/src/object/values.ts +10 -0
- package/src/packageDetect.ts +13 -0
- package/src/packageInfo.ts +6 -0
- package/src/promisify.spec.ts +50 -0
- package/src/promisify.ts +30 -0
- package/src/string/camelCase.spec.ts +119 -0
- package/src/string/camelCase.ts +79 -0
- package/src/string/index.ts +12 -0
- package/src/string/lowerFirst.spec.ts +41 -0
- package/src/string/lowerFirst.ts +46 -0
- package/src/string/pascalCase.spec.ts +26 -0
- package/src/string/shorten.spec.ts +38 -0
- package/src/string/shorten.ts +24 -0
- package/src/string/toHex.spec.ts +26 -0
- package/src/string/toHex.ts +27 -0
- package/src/string/toU8a.spec.ts +31 -0
- package/src/string/toU8a.ts +28 -0
- package/src/string/upperFirst.spec.ts +41 -0
- package/src/stringify.spec.ts +33 -0
- package/src/stringify.ts +20 -0
- package/src/test/index.ts +4 -0
- package/src/test/performance.ts +92 -0
- package/src/types.ts +100 -0
- package/src/u8a/cmp.spec.ts +62 -0
- package/src/u8a/cmp.ts +50 -0
- package/src/u8a/concat.spec.ts +42 -0
- package/src/u8a/concat.ts +60 -0
- package/src/u8a/concatBuffer.ts +34 -0
- package/src/u8a/empty.spec.ts +46 -0
- package/src/u8a/empty.ts +22 -0
- package/src/u8a/eq.spec.ts +113 -0
- package/src/u8a/eq.ts +46 -0
- package/src/u8a/fixLength.spec.ts +34 -0
- package/src/u8a/fixLength.ts +34 -0
- package/src/u8a/index.ts +22 -0
- package/src/u8a/sorted.spec.ts +20 -0
- package/src/u8a/sorted.ts +22 -0
- package/src/u8a/toBigInt.spec.ts +106 -0
- package/src/u8a/toBigInt.ts +100 -0
- package/src/u8a/toBn.spec.ts +106 -0
- package/src/u8a/toBn.ts +101 -0
- package/src/u8a/toBuffer.spec.ts +20 -0
- package/src/u8a/toBuffer.ts +28 -0
- package/src/u8a/toFloat.spec.ts +86 -0
- package/src/u8a/toFloat.ts +26 -0
- package/src/u8a/toHex.spec.ts +94 -0
- package/src/u8a/toHex.ts +68 -0
- package/src/u8a/toHexBuffer.spec.ts +63 -0
- package/src/u8a/toHexBuffer.ts +30 -0
- package/src/u8a/toNumber.spec.ts +47 -0
- package/src/u8a/toNumber.ts +80 -0
- package/src/u8a/toString.spec.ts +36 -0
- package/src/u8a/toString.ts +26 -0
- package/src/u8a/toU8a.spec.ts +63 -0
- package/src/u8a/toU8a.ts +46 -0
- package/src/u8a/wrap.spec.ts +139 -0
- package/src/u8a/wrap.ts +65 -0
- package/tsconfig.build.json +19 -0
- package/tsconfig.spec.json +17 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isNull } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isNull', (): void => {
|
|
9
|
+
it('returns true when a null value', (): void => {
|
|
10
|
+
expect(
|
|
11
|
+
isNull(null)
|
|
12
|
+
).toEqual(true);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('returns false on non-null values', (): void => {
|
|
16
|
+
expect(
|
|
17
|
+
isNull()
|
|
18
|
+
).toEqual(false);
|
|
19
|
+
});
|
|
20
|
+
});
|
package/src/is/null.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @name isNull
|
|
6
|
+
* @summary Tests for a `null` values.
|
|
7
|
+
* @description
|
|
8
|
+
* Checks to see if the input value is `null`.
|
|
9
|
+
* @example
|
|
10
|
+
* <BR>
|
|
11
|
+
*
|
|
12
|
+
* ```javascript
|
|
13
|
+
* import { isNull } from '@pezkuwi/util';
|
|
14
|
+
*
|
|
15
|
+
* console.log('isNull', isNull(null)); // => true
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function isNull (value?: unknown): value is null {
|
|
19
|
+
return value === null;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isNumber } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isNumber', (): void => {
|
|
9
|
+
it('returns true on valid numbers', (): void => {
|
|
10
|
+
expect(
|
|
11
|
+
isNumber(2)
|
|
12
|
+
).toEqual(true);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('returns false on invalid numbers', (): void => {
|
|
16
|
+
expect(
|
|
17
|
+
isNumber('2')
|
|
18
|
+
).toEqual(false);
|
|
19
|
+
});
|
|
20
|
+
});
|
package/src/is/number.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @name isNumber
|
|
6
|
+
* @summary Tests for a JavaScript number.
|
|
7
|
+
* @description
|
|
8
|
+
* Checks to see if the input value is a valid number.
|
|
9
|
+
* @example
|
|
10
|
+
* <BR>
|
|
11
|
+
*
|
|
12
|
+
* ```javascript
|
|
13
|
+
* import { isNumber } from '@pezkuwi/util';
|
|
14
|
+
*
|
|
15
|
+
* console.log('isNumber', isNumber(1234)); // => true
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function isNumber (value: unknown): value is number {
|
|
19
|
+
return typeof value === 'number';
|
|
20
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isObject } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isObject', (): void => {
|
|
9
|
+
it('returns true on valid objects', (): void => {
|
|
10
|
+
expect(
|
|
11
|
+
isObject({})
|
|
12
|
+
).toEqual(true);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('returns false on invalid objects', (): void => {
|
|
16
|
+
expect(
|
|
17
|
+
isObject('notAnObject')
|
|
18
|
+
).toEqual(false);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('returns false on null', (): void => {
|
|
22
|
+
expect(
|
|
23
|
+
isObject(null)
|
|
24
|
+
).toEqual(false);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('returns false on bigint', (): void => {
|
|
28
|
+
expect(
|
|
29
|
+
isObject(123n)
|
|
30
|
+
).toEqual(false);
|
|
31
|
+
});
|
|
32
|
+
});
|
package/src/is/object.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
|
+
type ObjectIndexed = Record<string, any>;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @name isObject
|
|
9
|
+
* @summary Tests for an `object`.
|
|
10
|
+
* @description
|
|
11
|
+
* Checks to see if the input value is a JavaScript object.
|
|
12
|
+
* @example
|
|
13
|
+
* <BR>
|
|
14
|
+
*
|
|
15
|
+
* ```javascript
|
|
16
|
+
* import { isObject } from '@pezkuwi/util';
|
|
17
|
+
*
|
|
18
|
+
* isObject({}); // => true
|
|
19
|
+
* isObject('something'); // => false
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function isObject <T extends ObjectIndexed = ObjectIndexed> (value?: unknown): value is T {
|
|
23
|
+
return !!value && typeof value === 'object';
|
|
24
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isObservable } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isObservable', (): void => {
|
|
9
|
+
it('returns true on valid observables', (): void => {
|
|
10
|
+
expect(
|
|
11
|
+
isObservable({ next: (): boolean => true })
|
|
12
|
+
).toEqual(true);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('returns false on invalid objects', (): void => {
|
|
16
|
+
expect(
|
|
17
|
+
isObservable('notAnObservable')
|
|
18
|
+
).toEqual(false);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('returns false on invalid next functions', (): void => {
|
|
22
|
+
expect(
|
|
23
|
+
isObservable({ next: true })
|
|
24
|
+
).toEqual(false);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import type { Observable } from '../types.js';
|
|
5
|
+
|
|
6
|
+
import { isOn } from './helpers.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @name isBObservable
|
|
10
|
+
* @summary Tests for a `Observable` object instance.
|
|
11
|
+
* @description
|
|
12
|
+
* Checks to see if the input object is an instance of `BN` (bn.js).
|
|
13
|
+
* @example
|
|
14
|
+
* <BR>
|
|
15
|
+
*
|
|
16
|
+
* ```javascript
|
|
17
|
+
* import { isObservable } from '@pezkuwi/util';
|
|
18
|
+
*
|
|
19
|
+
* console.log('isObservable', isObservable(...));
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export const isObservable = /*#__PURE__*/ isOn<Observable>('next');
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isPromise } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isPromise', (): void => {
|
|
9
|
+
it('returns true on valid Promise (Promise-like)', (): void => {
|
|
10
|
+
expect(
|
|
11
|
+
isPromise(Promise.resolve(1))
|
|
12
|
+
).toEqual(true);
|
|
13
|
+
expect(
|
|
14
|
+
isPromise({ catch: () => null, then: () => null })
|
|
15
|
+
).toEqual(true);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('returns false on invalid objects', (): void => {
|
|
19
|
+
expect(
|
|
20
|
+
isPromise('notAnObservable')
|
|
21
|
+
).toEqual(false);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('returns false on invalid catch/then functions', (): void => {
|
|
25
|
+
expect(
|
|
26
|
+
isPromise({ catch: () => null, then: true })
|
|
27
|
+
).toEqual(false);
|
|
28
|
+
expect(
|
|
29
|
+
isPromise({ catch: true, then: () => null })
|
|
30
|
+
).toEqual(false);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isRiscV } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isRiscV', (): void => {
|
|
9
|
+
it('is false on non-elf/non-pvm header', (): void => {
|
|
10
|
+
expect(isRiscV(new Uint8Array([0, 97, 115, 109, 1, 2, 3]))).toEqual(false);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('is false on partial-elf/pvm header', (): void => {
|
|
14
|
+
expect(isRiscV(new Uint8Array([0x7f, 0x45, 0x4c]))).toEqual(false);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('is false on empty byte before elf/pvm header', (): void => {
|
|
18
|
+
expect(
|
|
19
|
+
isRiscV(
|
|
20
|
+
new Uint8Array([0x00, 0x7f, 0x45, 0x4c, 0x46, 0xff, 0x00, 0x42, 0x23])
|
|
21
|
+
)
|
|
22
|
+
).toEqual(false);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('is true when a elf header is found', (): void => {
|
|
26
|
+
expect(
|
|
27
|
+
isRiscV(new Uint8Array([0x7f, 0x45, 0x4c, 0x46, 0xff, 0x00, 0x42, 0x23]))
|
|
28
|
+
).toEqual(true);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('is true when a pvm header is found', (): void => {
|
|
32
|
+
expect(
|
|
33
|
+
isRiscV(new Uint8Array([0x50, 0x56, 0x4d, 0x00, 0xff, 0x00, 0x42, 0x23]))
|
|
34
|
+
).toEqual(true);
|
|
35
|
+
});
|
|
36
|
+
});
|
package/src/is/riscv.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { u8aEq } from '../u8a/eq.js';
|
|
5
|
+
import { isU8a } from './u8a.js';
|
|
6
|
+
|
|
7
|
+
// general elf header
|
|
8
|
+
const ELF_MAGIC = new Uint8Array([0x7f, 0x45, 0x4c, 0x46]); // ELF magic bytes: 0x7f, 'E', 'L', 'F'
|
|
9
|
+
|
|
10
|
+
// contract-specific PVM header
|
|
11
|
+
const PVM_MAGIC = new Uint8Array([0x50, 0x56, 0x4d, 0x00]); // 'P', 'V', 'M', 0x00
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @name isRiscV
|
|
15
|
+
* @summary Tests if the input has a RISC-V header
|
|
16
|
+
* @description
|
|
17
|
+
* Checks to see if the input Uint8Array contains a valid RISC-V header
|
|
18
|
+
*/
|
|
19
|
+
export function isRiscV (bytes: unknown): bytes is Uint8Array {
|
|
20
|
+
if (isU8a(bytes)) {
|
|
21
|
+
const start = bytes.subarray(0, 4);
|
|
22
|
+
|
|
23
|
+
return u8aEq(start, PVM_MAGIC) || u8aEq(start, ELF_MAGIC);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isString } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isString', (): void => {
|
|
9
|
+
it('returns true on valid strings', (): void => {
|
|
10
|
+
expect(
|
|
11
|
+
isString('123')
|
|
12
|
+
).toEqual(true);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('returns true on empty strings', (): void => {
|
|
16
|
+
expect(
|
|
17
|
+
isString('')
|
|
18
|
+
).toEqual(true);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('returns true on String object', (): void => {
|
|
22
|
+
expect(
|
|
23
|
+
isString(String('foo'))
|
|
24
|
+
).toEqual(true);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('returns false on invalid numbers', (): void => {
|
|
28
|
+
expect(
|
|
29
|
+
isString(2)
|
|
30
|
+
).toEqual(false);
|
|
31
|
+
});
|
|
32
|
+
});
|
package/src/is/string.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import type { AnyString } from '../types.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @name isString
|
|
8
|
+
* @summary Tests for a string.
|
|
9
|
+
* @description
|
|
10
|
+
* Checks to see if the input value is a JavaScript string.
|
|
11
|
+
* @example
|
|
12
|
+
* <BR>
|
|
13
|
+
*
|
|
14
|
+
* ```javascript
|
|
15
|
+
* import { isString } from '@pezkuwi/util';
|
|
16
|
+
*
|
|
17
|
+
* console.log('isString', isString('test')); // => true
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function isString (value: unknown): value is AnyString {
|
|
21
|
+
return typeof value === 'string' || value instanceof String;
|
|
22
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isTestChain } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isTestChain', (): void => {
|
|
9
|
+
it('enables test environment when chain specification matches text of dev or loc(al)', (): void => {
|
|
10
|
+
const validTestModeChainSpecsWithDev = ['Development'];
|
|
11
|
+
const validTestModeChainSpecsWithLoc = ['Local Testnet'];
|
|
12
|
+
|
|
13
|
+
validTestModeChainSpecsWithDev.concat(validTestModeChainSpecsWithLoc).forEach((s): void => {
|
|
14
|
+
expect(isTestChain(s)).toEqual(true);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('disables keyring test mode when chain specification is not a test mode or undefined or number type', (): void => {
|
|
19
|
+
const invalidTestModeChainSpecs = ['dev', 'local', 'development', 'PoC-1 Testnet', 'Staging Testnet', 'future PoC-2 Testnet', 'a pocadot?', undefined];
|
|
20
|
+
|
|
21
|
+
invalidTestModeChainSpecs.forEach((s): void => {
|
|
22
|
+
expect(isTestChain(s)).toEqual(false);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
const REGEX_DEV = /(Development|Local Testnet)$/;
|
|
5
|
+
|
|
6
|
+
export function isTestChain (chain?: string | null): boolean {
|
|
7
|
+
if (!chain) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return !!REGEX_DEV.test(chain.toString());
|
|
12
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isToBigInt } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isToBigInt', (): void => {
|
|
9
|
+
it('is false on no value', (): void => {
|
|
10
|
+
expect(isToBigInt()).toEqual(false);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('is false on non-compact value', (): void => {
|
|
14
|
+
expect(isToBigInt(123)).toEqual(false);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('is true when compact-like signature is found', (): void => {
|
|
18
|
+
expect(isToBigInt({
|
|
19
|
+
toBigInt: () => BigInt(1)
|
|
20
|
+
})).toEqual(true);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import BN from 'bn.js';
|
|
7
|
+
|
|
8
|
+
import { isToBn } from './index.js';
|
|
9
|
+
|
|
10
|
+
describe('isToBn', (): void => {
|
|
11
|
+
it('is false on no value', (): void => {
|
|
12
|
+
expect(isToBn()).toEqual(false);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('is false on non-compact value', (): void => {
|
|
16
|
+
expect(isToBn(123)).toEqual(false);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('is true when compact-like signature is found', (): void => {
|
|
20
|
+
expect(isToBn({
|
|
21
|
+
toBigInt: () => BigInt(1),
|
|
22
|
+
toBn: () => new BN(1)
|
|
23
|
+
})).toEqual(true);
|
|
24
|
+
});
|
|
25
|
+
});
|
package/src/is/toBn.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { perf } from '../test/index.js';
|
|
7
|
+
import { isU8a } from './index.js';
|
|
8
|
+
|
|
9
|
+
describe('isU8a', (): void => {
|
|
10
|
+
it('returns false on undefined values', (): void => {
|
|
11
|
+
expect(
|
|
12
|
+
isU8a()
|
|
13
|
+
).toEqual(false);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('returns false on null values', (): void => {
|
|
17
|
+
expect(
|
|
18
|
+
isU8a(null)
|
|
19
|
+
).toEqual(false);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('returns false on Array values', (): void => {
|
|
23
|
+
expect(
|
|
24
|
+
isU8a([1, 2, 3])
|
|
25
|
+
).toEqual(false);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('returns true on Buffer values', (): void => {
|
|
29
|
+
// under Node, Buffer implements Uint8Array
|
|
30
|
+
expect(
|
|
31
|
+
isU8a(Buffer.from([1, 2, 3]))
|
|
32
|
+
).toEqual(true);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('returns true on Uint8Array values', (): void => {
|
|
36
|
+
expect(
|
|
37
|
+
isU8a(new Uint8Array())
|
|
38
|
+
).toEqual(true);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
perf('isU8a', 2_000_000, [[new Uint8Array()]], isU8a);
|
|
42
|
+
});
|
package/src/is/u8a.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @name isU8a
|
|
6
|
+
* @summary Tests for a `Uint8Array` object instance.
|
|
7
|
+
* @description
|
|
8
|
+
* Checks to see if the input object is an instance of `Uint8Array`.
|
|
9
|
+
* @example
|
|
10
|
+
* <BR>
|
|
11
|
+
*
|
|
12
|
+
* ```javascript
|
|
13
|
+
* import { isUint8Array } from '@pezkuwi/util';
|
|
14
|
+
*
|
|
15
|
+
* console.log('isU8a', isU8a([])); // => false
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function isU8a (value?: unknown): value is Uint8Array {
|
|
19
|
+
// here we defer the instanceof check which is actually slightly
|
|
20
|
+
// slower than just checking the constrctor (direct instances)
|
|
21
|
+
return (
|
|
22
|
+
((value && (value as Uint8Array).constructor) === Uint8Array) ||
|
|
23
|
+
value instanceof Uint8Array
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { perf } from '../test/index.js';
|
|
7
|
+
import { isUndefined } from './index.js';
|
|
8
|
+
|
|
9
|
+
describe('isUndefined', (): void => {
|
|
10
|
+
it('returns true on undefined values', (): void => {
|
|
11
|
+
expect(
|
|
12
|
+
isUndefined()
|
|
13
|
+
).toEqual(true);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('returns false on defined values', (): void => {
|
|
17
|
+
expect(
|
|
18
|
+
isUndefined(null)
|
|
19
|
+
).toEqual(false);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
perf('isUndefined', 10_000_000, [[null]], isUndefined);
|
|
23
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @name isUndefined
|
|
6
|
+
* @summary Tests for a `undefined` values.
|
|
7
|
+
* @description
|
|
8
|
+
* Checks to see if the input value is `undefined`.
|
|
9
|
+
* @example
|
|
10
|
+
* <BR>
|
|
11
|
+
*
|
|
12
|
+
* ```javascript
|
|
13
|
+
* import { isUndefined } from '@pezkuwi/util';
|
|
14
|
+
*
|
|
15
|
+
* console.log('isUndefined', isUndefined(void(0))); // => true
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
export function isUndefined (value?: unknown): value is undefined {
|
|
20
|
+
return value === undefined;
|
|
21
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
+
|
|
6
|
+
import { isUtf8 } from './index.js';
|
|
7
|
+
|
|
8
|
+
describe('isUtf8', (): void => {
|
|
9
|
+
it('returns true for an ASCII string', (): void => {
|
|
10
|
+
expect(isUtf8('Hello\tWorld!\n\rTesting')).toEqual(true);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('returns true for ASCII bytes', (): void => {
|
|
14
|
+
expect(isUtf8(new Uint8Array([0x31, 0x32, 0x20, 10]))).toEqual(true);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('returns true for empty string inputs', (): void => {
|
|
18
|
+
expect(isUtf8('')).toEqual(true);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('returns true for empty U8a inputs', (): void => {
|
|
22
|
+
expect(isUtf8(new Uint8Array())).toEqual(true);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('returns false for empty undefined inputs', (): void => {
|
|
26
|
+
expect(isUtf8()).toEqual(false);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('is valid for ru', (): void => {
|
|
30
|
+
expect(isUtf8('Приветствую, ми')).toEqual(true);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('is valid for zh', (): void => {
|
|
34
|
+
expect(isUtf8('你好')).toEqual(true);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('is invalid for something random', (): void => {
|
|
38
|
+
expect(isUtf8('0x7f07b1f87709608bee603bbc79a0dfc29cd315c1351a83aa31adf7458d7d3003')).toEqual(false);
|
|
39
|
+
expect(isUtf8('0xc9ec51351beec59b52db06b3dd4685004013035df080358c319553ced597ca05')).toEqual(false);
|
|
40
|
+
expect(isUtf8('0xd12cef06e90a05b63737d542aaee1389ff9f5c25e461b362180f025c3b2d5635')).toEqual(false);
|
|
41
|
+
});
|
|
42
|
+
});
|