@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.
Files changed (260) hide show
  1. package/README.md +17 -0
  2. package/package.json +49 -0
  3. package/src/array/chunk.spec.ts +29 -0
  4. package/src/array/chunk.ts +35 -0
  5. package/src/array/filter.spec.ts +20 -0
  6. package/src/array/filter.ts +24 -0
  7. package/src/array/flatten.spec.ts +33 -0
  8. package/src/array/flatten.ts +51 -0
  9. package/src/array/index.ts +14 -0
  10. package/src/array/range.spec.ts +29 -0
  11. package/src/array/range.ts +31 -0
  12. package/src/array/shuffle.spec.ts +39 -0
  13. package/src/array/shuffle.ts +27 -0
  14. package/src/array/unzip.spec.ts +14 -0
  15. package/src/array/unzip.ts +18 -0
  16. package/src/array/zip.spec.ts +26 -0
  17. package/src/array/zip.ts +17 -0
  18. package/src/assert.spec.ts +40 -0
  19. package/src/assert.ts +50 -0
  20. package/src/bi/consts.ts +112 -0
  21. package/src/bi/helpers.ts +23 -0
  22. package/src/bi/index.ts +16 -0
  23. package/src/bi/max.spec.ts +32 -0
  24. package/src/bi/min.spec.ts +26 -0
  25. package/src/bi/min.ts +16 -0
  26. package/src/bi/sqrt.spec.ts +59 -0
  27. package/src/bi/sqrt.ts +43 -0
  28. package/src/bi/toBigInt.spec.ts +69 -0
  29. package/src/bi/toBigInt.ts +33 -0
  30. package/src/bi/toHex.spec.ts +56 -0
  31. package/src/bi/toHex.ts +16 -0
  32. package/src/bi/toU8a.spec.ts +99 -0
  33. package/src/bi/toU8a.ts +72 -0
  34. package/src/bn/bn.ts +6 -0
  35. package/src/bn/consts.spec.ts +38 -0
  36. package/src/bn/consts.ts +112 -0
  37. package/src/bn/fromHex.spec.ts +15 -0
  38. package/src/bn/fromHex.ts +4 -0
  39. package/src/bn/index.ts +18 -0
  40. package/src/bn/max.spec.ts +32 -0
  41. package/src/bn/min.spec.ts +26 -0
  42. package/src/bn/min.ts +36 -0
  43. package/src/bn/sqrt.spec.ts +37 -0
  44. package/src/bn/sqrt.ts +50 -0
  45. package/src/bn/toBn.spec.ts +53 -0
  46. package/src/bn/toBn.ts +43 -0
  47. package/src/bn/toHex.spec.ts +50 -0
  48. package/src/bn/toHex.ts +27 -0
  49. package/src/bn/toU8a.spec.ts +60 -0
  50. package/src/bn/toU8a.ts +45 -0
  51. package/src/buffer/index.ts +8 -0
  52. package/src/buffer/toU8a.spec.ts +20 -0
  53. package/src/buffer/toU8a.ts +20 -0
  54. package/src/bundle.ts +35 -0
  55. package/src/compact/addLength.spec.ts +14 -0
  56. package/src/compact/addLength.ts +24 -0
  57. package/src/compact/defaults.ts +7 -0
  58. package/src/compact/fromU8a.spec.ts +84 -0
  59. package/src/compact/fromU8a.ts +109 -0
  60. package/src/compact/index.ts +28 -0
  61. package/src/compact/stripLength.spec.ts +17 -0
  62. package/src/compact/stripLength.ts +26 -0
  63. package/src/compact/toU8a.spec.ts +59 -0
  64. package/src/compact/toU8a.ts +53 -0
  65. package/src/compact/types.ts +4 -0
  66. package/src/detectPackage.spec.ts +110 -0
  67. package/src/detectPackage.ts +138 -0
  68. package/src/extractTime.spec.ts +21 -0
  69. package/src/extractTime.ts +71 -0
  70. package/src/float/index.ts +4 -0
  71. package/src/float/toU8a.spec.ts +52 -0
  72. package/src/float/toU8a.ts +30 -0
  73. package/src/format/formatBalance.spec.ts +296 -0
  74. package/src/format/formatBalance.ts +177 -0
  75. package/src/format/formatDate.spec.ts +17 -0
  76. package/src/format/formatDate.ts +22 -0
  77. package/src/format/formatDecimal.spec.ts +28 -0
  78. package/src/format/formatDecimal.ts +22 -0
  79. package/src/format/formatElapsed.spec.ts +44 -0
  80. package/src/format/formatElapsed.ts +35 -0
  81. package/src/format/formatNumber.spec.ts +60 -0
  82. package/src/format/formatNumber.ts +29 -0
  83. package/src/format/getSeparator.spec.ts +53 -0
  84. package/src/format/getSeparator.ts +15 -0
  85. package/src/format/index.ts +9 -0
  86. package/src/format/si.ts +52 -0
  87. package/src/has.spec.ts +12 -0
  88. package/src/has.ts +38 -0
  89. package/src/hex/addPrefix.spec.ts +32 -0
  90. package/src/hex/addPrefix.ts +26 -0
  91. package/src/hex/fixLength.spec.ts +38 -0
  92. package/src/hex/fixLength.ts +36 -0
  93. package/src/hex/hasPrefix.spec.ts +32 -0
  94. package/src/hex/hasPrefix.ts +24 -0
  95. package/src/hex/index.ts +16 -0
  96. package/src/hex/stripPrefix.spec.ts +44 -0
  97. package/src/hex/stripPrefix.ts +30 -0
  98. package/src/hex/toBigInt.spec.ts +74 -0
  99. package/src/hex/toBigInt.ts +19 -0
  100. package/src/hex/toBn.spec.ts +74 -0
  101. package/src/hex/toBn.ts +40 -0
  102. package/src/hex/toNumber.spec.ts +20 -0
  103. package/src/hex/toNumber.ts +24 -0
  104. package/src/hex/toString.spec.ts +20 -0
  105. package/src/hex/toString.ts +25 -0
  106. package/src/hex/toU8a.spec.ts +76 -0
  107. package/src/hex/toU8a.ts +68 -0
  108. package/src/hex/toU8aBuffer.spec.ts +38 -0
  109. package/src/hex/toU8aBuffer.ts +52 -0
  110. package/src/index.spec.ts +12 -0
  111. package/src/index.ts +6 -0
  112. package/src/is/array.spec.ts +20 -0
  113. package/src/is/array.ts +10 -0
  114. package/src/is/ascii.spec.ts +49 -0
  115. package/src/is/ascii.ts +52 -0
  116. package/src/is/bigInt.spec.ts +26 -0
  117. package/src/is/bigInt.ts +20 -0
  118. package/src/is/bn.spec.ts +21 -0
  119. package/src/is/bn.ts +23 -0
  120. package/src/is/boolean.spec.ts +26 -0
  121. package/src/is/boolean.ts +20 -0
  122. package/src/is/buffer.spec.ts +26 -0
  123. package/src/is/buffer.ts +28 -0
  124. package/src/is/childClass.spec.ts +36 -0
  125. package/src/is/childClass.ts +29 -0
  126. package/src/is/class.spec.ts +37 -0
  127. package/src/is/class.ts +12 -0
  128. package/src/is/codec.spec.ts +52 -0
  129. package/src/is/codec.ts +26 -0
  130. package/src/is/compact.spec.ts +27 -0
  131. package/src/is/compact.ts +19 -0
  132. package/src/is/error.spec.ts +20 -0
  133. package/src/is/error.ts +23 -0
  134. package/src/is/function.spec.ts +20 -0
  135. package/src/is/function.ts +23 -0
  136. package/src/is/helpers.ts +23 -0
  137. package/src/is/hex.spec.ts +77 -0
  138. package/src/is/hex.ts +36 -0
  139. package/src/is/index.ts +36 -0
  140. package/src/is/instanceOf.spec.ts +48 -0
  141. package/src/is/instanceOf.ts +24 -0
  142. package/src/is/ip.spec.ts +50 -0
  143. package/src/is/ip.ts +56 -0
  144. package/src/is/jsonObject.spec.ts +51 -0
  145. package/src/is/jsonObject.ts +45 -0
  146. package/src/is/null.spec.ts +20 -0
  147. package/src/is/null.ts +20 -0
  148. package/src/is/number.spec.ts +20 -0
  149. package/src/is/number.ts +20 -0
  150. package/src/is/object.spec.ts +32 -0
  151. package/src/is/object.ts +24 -0
  152. package/src/is/observable.spec.ts +26 -0
  153. package/src/is/observable.ts +22 -0
  154. package/src/is/promise.spec.ts +32 -0
  155. package/src/is/promise.ts +6 -0
  156. package/src/is/riscv.spec.ts +36 -0
  157. package/src/is/riscv.ts +27 -0
  158. package/src/is/string.spec.ts +32 -0
  159. package/src/is/string.ts +22 -0
  160. package/src/is/testChain.spec.ts +25 -0
  161. package/src/is/testChain.ts +12 -0
  162. package/src/is/toBigInt.spec.ts +22 -0
  163. package/src/is/toBigInt.ts +8 -0
  164. package/src/is/toBn.spec.ts +25 -0
  165. package/src/is/toBn.ts +8 -0
  166. package/src/is/u8a.spec.ts +42 -0
  167. package/src/is/u8a.ts +25 -0
  168. package/src/is/undefined.spec.ts +23 -0
  169. package/src/is/undefined.ts +21 -0
  170. package/src/is/utf8.spec.ts +42 -0
  171. package/src/is/utf8.ts +207 -0
  172. package/src/is/wasm.spec.ts +20 -0
  173. package/src/is/wasm.ts +17 -0
  174. package/src/lazy.spec.ts +71 -0
  175. package/src/lazy.ts +63 -0
  176. package/src/logger.spec.ts +188 -0
  177. package/src/logger.ts +160 -0
  178. package/src/memoize.spec.ts +79 -0
  179. package/src/memoize.ts +49 -0
  180. package/src/mod.ts +4 -0
  181. package/src/nextTick.ts +26 -0
  182. package/src/noop.ts +16 -0
  183. package/src/number/index.ts +9 -0
  184. package/src/number/toHex.spec.ts +44 -0
  185. package/src/number/toHex.ts +27 -0
  186. package/src/number/toU8a.spec.ts +50 -0
  187. package/src/number/toU8a.ts +25 -0
  188. package/src/object/clear.spec.ts +14 -0
  189. package/src/object/clear.ts +16 -0
  190. package/src/object/copy.spec.ts +17 -0
  191. package/src/object/copy.ts +12 -0
  192. package/src/object/entries.spec.ts +20 -0
  193. package/src/object/entries.ts +12 -0
  194. package/src/object/index.ts +10 -0
  195. package/src/object/keys.spec.ts +19 -0
  196. package/src/object/keys.ts +10 -0
  197. package/src/object/property.spec.ts +149 -0
  198. package/src/object/property.ts +39 -0
  199. package/src/object/spread.spec.ts +36 -0
  200. package/src/object/spread.ts +38 -0
  201. package/src/object/values.spec.ts +19 -0
  202. package/src/object/values.ts +10 -0
  203. package/src/packageDetect.ts +13 -0
  204. package/src/packageInfo.ts +6 -0
  205. package/src/promisify.spec.ts +50 -0
  206. package/src/promisify.ts +30 -0
  207. package/src/string/camelCase.spec.ts +119 -0
  208. package/src/string/camelCase.ts +79 -0
  209. package/src/string/index.ts +12 -0
  210. package/src/string/lowerFirst.spec.ts +41 -0
  211. package/src/string/lowerFirst.ts +46 -0
  212. package/src/string/pascalCase.spec.ts +26 -0
  213. package/src/string/shorten.spec.ts +38 -0
  214. package/src/string/shorten.ts +24 -0
  215. package/src/string/toHex.spec.ts +26 -0
  216. package/src/string/toHex.ts +27 -0
  217. package/src/string/toU8a.spec.ts +31 -0
  218. package/src/string/toU8a.ts +28 -0
  219. package/src/string/upperFirst.spec.ts +41 -0
  220. package/src/stringify.spec.ts +33 -0
  221. package/src/stringify.ts +20 -0
  222. package/src/test/index.ts +4 -0
  223. package/src/test/performance.ts +92 -0
  224. package/src/types.ts +100 -0
  225. package/src/u8a/cmp.spec.ts +62 -0
  226. package/src/u8a/cmp.ts +50 -0
  227. package/src/u8a/concat.spec.ts +42 -0
  228. package/src/u8a/concat.ts +60 -0
  229. package/src/u8a/concatBuffer.ts +34 -0
  230. package/src/u8a/empty.spec.ts +46 -0
  231. package/src/u8a/empty.ts +22 -0
  232. package/src/u8a/eq.spec.ts +113 -0
  233. package/src/u8a/eq.ts +46 -0
  234. package/src/u8a/fixLength.spec.ts +34 -0
  235. package/src/u8a/fixLength.ts +34 -0
  236. package/src/u8a/index.ts +22 -0
  237. package/src/u8a/sorted.spec.ts +20 -0
  238. package/src/u8a/sorted.ts +22 -0
  239. package/src/u8a/toBigInt.spec.ts +106 -0
  240. package/src/u8a/toBigInt.ts +100 -0
  241. package/src/u8a/toBn.spec.ts +106 -0
  242. package/src/u8a/toBn.ts +101 -0
  243. package/src/u8a/toBuffer.spec.ts +20 -0
  244. package/src/u8a/toBuffer.ts +28 -0
  245. package/src/u8a/toFloat.spec.ts +86 -0
  246. package/src/u8a/toFloat.ts +26 -0
  247. package/src/u8a/toHex.spec.ts +94 -0
  248. package/src/u8a/toHex.ts +68 -0
  249. package/src/u8a/toHexBuffer.spec.ts +63 -0
  250. package/src/u8a/toHexBuffer.ts +30 -0
  251. package/src/u8a/toNumber.spec.ts +47 -0
  252. package/src/u8a/toNumber.ts +80 -0
  253. package/src/u8a/toString.spec.ts +36 -0
  254. package/src/u8a/toString.ts +26 -0
  255. package/src/u8a/toU8a.spec.ts +63 -0
  256. package/src/u8a/toU8a.ts +46 -0
  257. package/src/u8a/wrap.spec.ts +139 -0
  258. package/src/u8a/wrap.ts +65 -0
  259. package/tsconfig.build.json +19 -0
  260. 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
+ });
@@ -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
+ });
@@ -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,6 @@
1
+ // Copyright 2017-2025 @polkadot/util authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { isOnObject } from './helpers.js';
5
+
6
+ export const isPromise = /*#__PURE__*/ isOnObject<Promise<unknown>>('catch', 'then');
@@ -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
+ });
@@ -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
+ });
@@ -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,8 @@
1
+ // Copyright 2017-2025 @polkadot/util authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { ToBigInt } from '../types.js';
5
+
6
+ import { isOn } from './helpers.js';
7
+
8
+ export const isToBigInt = /*#__PURE__*/ isOn<ToBigInt>('toBigInt');
@@ -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,8 @@
1
+ // Copyright 2017-2025 @polkadot/util authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { ToBn } from '../types.js';
5
+
6
+ import { isOn } from './helpers.js';
7
+
8
+ export const isToBn = /*#__PURE__*/ isOn<ToBn>('toBn');
@@ -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
+ });