@xyo-network/hash 2.82.0-rc.1 → 2.83.0

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 (87) hide show
  1. package/dist/browser/PayloadHasher.d.cts +15 -26
  2. package/dist/browser/PayloadHasher.d.cts.map +1 -1
  3. package/dist/browser/PayloadHasher.d.mts +15 -26
  4. package/dist/browser/PayloadHasher.d.mts.map +1 -1
  5. package/dist/browser/PayloadHasher.d.ts +15 -26
  6. package/dist/browser/PayloadHasher.d.ts.map +1 -1
  7. package/dist/browser/index.cjs +20 -68
  8. package/dist/browser/index.cjs.map +1 -1
  9. package/dist/browser/index.d.cts +0 -1
  10. package/dist/browser/index.d.cts.map +1 -1
  11. package/dist/browser/index.d.mts +0 -1
  12. package/dist/browser/index.d.mts.map +1 -1
  13. package/dist/browser/index.d.ts +0 -1
  14. package/dist/browser/index.d.ts.map +1 -1
  15. package/dist/browser/index.js +20 -68
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/browser/removeEmptyFields.d.cts +1 -1
  18. package/dist/browser/removeEmptyFields.d.cts.map +1 -1
  19. package/dist/browser/removeEmptyFields.d.mts +1 -1
  20. package/dist/browser/removeEmptyFields.d.mts.map +1 -1
  21. package/dist/browser/removeEmptyFields.d.ts +1 -1
  22. package/dist/browser/removeEmptyFields.d.ts.map +1 -1
  23. package/dist/browser/removeFields.d.cts +3 -4
  24. package/dist/browser/removeFields.d.cts.map +1 -1
  25. package/dist/browser/removeFields.d.mts +3 -4
  26. package/dist/browser/removeFields.d.mts.map +1 -1
  27. package/dist/browser/removeFields.d.ts +3 -4
  28. package/dist/browser/removeFields.d.ts.map +1 -1
  29. package/dist/browser/sortFields.d.cts +1 -2
  30. package/dist/browser/sortFields.d.cts.map +1 -1
  31. package/dist/browser/sortFields.d.mts +1 -2
  32. package/dist/browser/sortFields.d.mts.map +1 -1
  33. package/dist/browser/sortFields.d.ts +1 -2
  34. package/dist/browser/sortFields.d.ts.map +1 -1
  35. package/dist/node/PayloadHasher.d.cts +15 -26
  36. package/dist/node/PayloadHasher.d.cts.map +1 -1
  37. package/dist/node/PayloadHasher.d.mts +15 -26
  38. package/dist/node/PayloadHasher.d.mts.map +1 -1
  39. package/dist/node/PayloadHasher.d.ts +15 -26
  40. package/dist/node/PayloadHasher.d.ts.map +1 -1
  41. package/dist/node/index.cjs +21 -70
  42. package/dist/node/index.cjs.map +1 -1
  43. package/dist/node/index.d.cts +0 -1
  44. package/dist/node/index.d.cts.map +1 -1
  45. package/dist/node/index.d.mts +0 -1
  46. package/dist/node/index.d.mts.map +1 -1
  47. package/dist/node/index.d.ts +0 -1
  48. package/dist/node/index.d.ts.map +1 -1
  49. package/dist/node/index.js +20 -68
  50. package/dist/node/index.js.map +1 -1
  51. package/dist/node/removeEmptyFields.d.cts +1 -1
  52. package/dist/node/removeEmptyFields.d.cts.map +1 -1
  53. package/dist/node/removeEmptyFields.d.mts +1 -1
  54. package/dist/node/removeEmptyFields.d.mts.map +1 -1
  55. package/dist/node/removeEmptyFields.d.ts +1 -1
  56. package/dist/node/removeEmptyFields.d.ts.map +1 -1
  57. package/dist/node/removeFields.d.cts +3 -4
  58. package/dist/node/removeFields.d.cts.map +1 -1
  59. package/dist/node/removeFields.d.mts +3 -4
  60. package/dist/node/removeFields.d.mts.map +1 -1
  61. package/dist/node/removeFields.d.ts +3 -4
  62. package/dist/node/removeFields.d.ts.map +1 -1
  63. package/dist/node/sortFields.d.cts +1 -2
  64. package/dist/node/sortFields.d.cts.map +1 -1
  65. package/dist/node/sortFields.d.mts +1 -2
  66. package/dist/node/sortFields.d.mts.map +1 -1
  67. package/dist/node/sortFields.d.ts +1 -2
  68. package/dist/node/sortFields.d.ts.map +1 -1
  69. package/package.json +7 -10
  70. package/src/PayloadHasher.ts +27 -62
  71. package/src/index.ts +0 -1
  72. package/src/removeEmptyFields.ts +3 -2
  73. package/src/removeFields.ts +4 -4
  74. package/src/sortFields.ts +7 -10
  75. package/dist/browser/toUint8Array.d.cts +0 -4
  76. package/dist/browser/toUint8Array.d.cts.map +0 -1
  77. package/dist/browser/toUint8Array.d.mts +0 -4
  78. package/dist/browser/toUint8Array.d.mts.map +0 -1
  79. package/dist/browser/toUint8Array.d.ts +0 -4
  80. package/dist/browser/toUint8Array.d.ts.map +0 -1
  81. package/dist/node/toUint8Array.d.cts +0 -4
  82. package/dist/node/toUint8Array.d.cts.map +0 -1
  83. package/dist/node/toUint8Array.d.mts +0 -4
  84. package/dist/node/toUint8Array.d.mts.map +0 -1
  85. package/dist/node/toUint8Array.d.ts +0 -4
  86. package/dist/node/toUint8Array.d.ts.map +0 -1
  87. package/src/toUint8Array.ts +0 -35
@@ -1,6 +1,6 @@
1
- import { asHash, Hash } from '@xylabs/hex'
1
+ import { asHash, Hash, hexFromArrayBuffer } from '@xylabs/hex'
2
2
  import { subtle } from '@xylabs/platform'
3
- import { AnyObject, ObjectWrapper } from '@xyo-network/object'
3
+ import { EmptyObject, ObjectWrapper } from '@xyo-network/object'
4
4
  import { WasmSupport } from '@xyo-network/wasm'
5
5
  import { sha256 } from 'hash-wasm'
6
6
  import shajs from 'sha.js'
@@ -8,42 +8,40 @@ import shajs from 'sha.js'
8
8
  import { removeEmptyFields } from './removeEmptyFields'
9
9
  import { deepOmitUnderscoreFields } from './removeFields'
10
10
  import { sortFields } from './sortFields'
11
- import { toUint8Array } from './toUint8Array'
12
11
 
13
12
  const wasmSupportStatic = new WasmSupport(['bigInt'])
14
13
 
15
- export class PayloadHasher<T extends AnyObject = AnyObject> extends ObjectWrapper<T> {
14
+ export class PayloadHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {
16
15
  static allowSubtle = true
17
16
  static readonly wasmInitialized = wasmSupportStatic.initialize()
18
17
  static readonly wasmSupport = wasmSupportStatic
19
18
 
20
- static async filterExclude<T extends AnyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {
19
+ static async filterExclude<T extends EmptyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {
21
20
  const hashes = Array.isArray(hash) ? hash : [hash]
22
21
  return (await this.hashPairs(objs)).filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0])
23
22
  }
24
23
 
25
- static async filterInclude<T extends AnyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {
24
+ static async filterInclude<T extends EmptyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {
26
25
  const hashes = Array.isArray(hash) ? hash : [hash]
27
26
  return (await this.hashPairs(objs)).filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0])
28
27
  }
29
28
 
30
- static async find<T extends AnyObject>(objs: T[] = [], hash: Hash): Promise<T | undefined> {
29
+ static async find<T extends EmptyObject>(objs: T[] = [], hash: Hash): Promise<T | undefined> {
31
30
  return (await this.hashPairs(objs)).find(([_, objHash]) => objHash === hash)?.[0]
32
31
  }
33
32
 
34
- static async hashAsync<T extends AnyObject>(obj: T, encoding?: undefined): Promise<Hash>
35
- static async hashAsync<T extends AnyObject>(obj: T, encoding: 'buffer'): Promise<ArrayBuffer>
36
- static async hashAsync<T extends AnyObject>(obj: T, encoding: 'hex'): Promise<Hash>
37
- static async hashAsync<T extends AnyObject>(obj: T, encoding?: 'buffer' | 'hex'): Promise<Hash | ArrayBuffer> {
33
+ static async hashAsync<T extends EmptyObject>(obj: T): Promise<Hash> {
38
34
  if (PayloadHasher.allowSubtle) {
39
35
  try {
40
36
  const enc = new TextEncoder()
41
37
  const stringToHash = this.stringifyHashFields(obj)
42
38
  const b = enc.encode(stringToHash)
43
39
  const hashArray = await subtle.digest('SHA-256', b)
44
- return encoding === 'buffer' ? hashArray : asHash(hashArray, 256, true)
40
+ return hexFromArrayBuffer(hashArray, { bitLength: 256 })
45
41
  } catch (ex) {
46
- console.log('Setting allowSubtle to false')
42
+ const error = ex as Error
43
+ console.error(`Setting allowSubtle to false [${error.message}]`)
44
+ console.log(error.stack)
47
45
  PayloadHasher.allowSubtle = false
48
46
  }
49
47
  }
@@ -52,8 +50,7 @@ export class PayloadHasher<T extends AnyObject = AnyObject> extends ObjectWrappe
52
50
  if (this.wasmSupport.canUseWasm) {
53
51
  const stringToHash = this.stringifyHashFields(obj)
54
52
  try {
55
- const hash = asHash(await sha256(stringToHash), 256, true)
56
- return encoding === 'buffer' ? toUint8Array(hash) : hash
53
+ return asHash(await sha256(stringToHash), true)
57
54
  } catch (ex) {
58
55
  this.wasmSupport.allowWasm = false
59
56
  }
@@ -61,34 +58,24 @@ export class PayloadHasher<T extends AnyObject = AnyObject> extends ObjectWrappe
61
58
  return this.hashSync(obj)
62
59
  }
63
60
 
64
- static hashFields<T extends AnyObject>(obj: T): T {
61
+ static hashFields<T extends EmptyObject>(obj: T): T {
65
62
  return sortFields(removeEmptyFields(deepOmitUnderscoreFields(obj)))
66
63
  }
67
64
 
68
- static async hashPairs<T extends AnyObject>(objs: T[]): Promise<[T, Hash][]> {
69
- return await Promise.all(objs.map<Promise<[T, string]>>(async (obj) => [obj, await PayloadHasher.hashAsync(obj, 'hex')]))
65
+ static async hashPairs<T extends EmptyObject>(objs: T[]): Promise<[T, Hash][]> {
66
+ return await Promise.all(objs.map<Promise<[T, string]>>(async (obj) => [obj, await PayloadHasher.hashAsync(obj)]))
70
67
  }
71
68
 
72
- /** @deprecated pass encoding [hex,buffer] */
73
- static hashSync<T extends AnyObject>(obj: T, encoding?: undefined): Hash
74
- static hashSync<T extends AnyObject>(obj: T, encoding: 'buffer'): ArrayBuffer
75
- static hashSync<T extends AnyObject>(obj: T, encoding: 'hex'): Hash
76
- static hashSync<T extends AnyObject>(obj: T, encoding?: 'buffer' | 'hex'): Hash | ArrayBuffer {
77
- const buffer = shajs('sha256').update(this.stringifyHashFields(obj)).digest()
78
- switch (encoding) {
79
- case 'buffer':
80
- return buffer.buffer
81
- default:
82
- return asHash(buffer.toString('hex'), 256, true)
83
- }
69
+ static hashSync<T extends EmptyObject>(obj: T): Hash {
70
+ return asHash(shajs('sha256').update(this.stringifyHashFields(obj)).digest().toString('hex'), true)
84
71
  }
85
72
 
86
- static async hashes<T extends AnyObject>(objs: T[]): Promise<Hash[]> {
87
- return await Promise.all(objs.map((obj) => this.hashAsync(obj, 'hex')))
73
+ static async hashes<T extends EmptyObject>(objs: T[]): Promise<Hash[]> {
74
+ return await Promise.all(objs.map((obj) => this.hashAsync(obj)))
88
75
  }
89
76
 
90
77
  /** @function jsonPayload Returns a clone of the payload that is JSON safe */
91
- static jsonPayload<T extends AnyObject>(
78
+ static jsonPayload<T extends EmptyObject>(
92
79
  /** @param payload The payload to process */
93
80
  payload: T,
94
81
  /** @param meta Keeps underscore (meta) fields if set to true */
@@ -97,44 +84,22 @@ export class PayloadHasher<T extends AnyObject = AnyObject> extends ObjectWrappe
97
84
  return sortFields(removeEmptyFields(meta ? payload : deepOmitUnderscoreFields(payload)))
98
85
  }
99
86
 
100
- static stringifyHashFields<T extends AnyObject>(obj: T) {
87
+ static stringifyHashFields<T extends EmptyObject>(obj: T) {
101
88
  return JSON.stringify(this.hashFields(obj))
102
89
  }
103
90
 
104
- static async toMap<T extends AnyObject>(objs: T[]): Promise<Record<Hash, T>> {
91
+ static async toMap<T extends EmptyObject>(objs: T[]): Promise<Record<Hash, T>> {
105
92
  const result: Record<string, T> = {}
106
- await Promise.all(objs.map(async (obj) => (result[await PayloadHasher.hashAsync(obj, 'hex')] = obj)))
93
+ await Promise.all(objs.map(async (obj) => (result[await PayloadHasher.hashAsync(obj)] = obj)))
107
94
  return result
108
95
  }
109
96
 
110
- /** @deprecated pass encoding [hex,buffer] */
111
- async hashAsync(encoding?: undefined): Promise<Hash>
112
- async hashAsync(encoding: 'buffer'): Promise<ArrayBuffer>
113
- async hashAsync(encoding: 'hex'): Promise<Hash>
114
- async hashAsync(encoding?: 'buffer' | 'hex'): Promise<Hash | ArrayBuffer> {
115
- switch (encoding) {
116
- case 'buffer':
117
- return await PayloadHasher.hashAsync(this.obj, encoding)
118
- case 'hex':
119
- return await PayloadHasher.hashAsync(this.obj, encoding)
120
- default:
121
- return await PayloadHasher.hashAsync(this.obj, encoding)
122
- }
97
+ async hashAsync(): Promise<Hash> {
98
+ return await PayloadHasher.hashAsync(this.obj)
123
99
  }
124
100
 
125
- /** @deprecated pass encoding [hex,buffer] */
126
- hashSync(encoding?: undefined): Hash
127
- hashSync(encoding: 'buffer'): ArrayBuffer
128
- hashSync(encoding: 'hex'): Hash
129
- hashSync(encoding?: 'hex' | 'buffer'): Hash | ArrayBuffer {
130
- switch (encoding) {
131
- case 'hex':
132
- return PayloadHasher.hashSync(this.obj, encoding)
133
- case 'buffer':
134
- return PayloadHasher.hashSync(this.obj, encoding)
135
- default:
136
- return PayloadHasher.hashSync(this.obj, encoding)
137
- }
101
+ hashSync(): Hash {
102
+ return PayloadHasher.hashSync(this.obj)
138
103
  }
139
104
 
140
105
  /** @function jsonPayload Returns a clone of the payload that is JSON safe */
package/src/index.ts CHANGED
@@ -3,4 +3,3 @@ export * from './PayloadHasher'
3
3
  export * from './removeEmptyFields'
4
4
  export * from './removeFields'
5
5
  export * from './sortFields'
6
- export * from './toUint8Array'
@@ -1,9 +1,10 @@
1
+ import { AnyObject, EmptyObject } from '@xyo-network/object'
1
2
  import { typeOf } from '@xyo-network/typeof'
2
3
 
3
- export const removeEmptyFields = <T extends Record<string, unknown>>(obj: T) => {
4
+ export const removeEmptyFields = <T extends EmptyObject>(obj: T): T => {
4
5
  if (obj === null || Array.isArray(obj)) return obj
5
6
 
6
- const newObject: Record<string, unknown> = {}
7
+ const newObject: AnyObject = {}
7
8
  Object.entries(obj).forEach(([key, value]) => {
8
9
  if (typeOf(value) === 'object') {
9
10
  newObject[key] = removeEmptyFields(value as Record<string, unknown>)
@@ -1,9 +1,9 @@
1
1
  import { isObject, mapValues, merge, omitBy, pickBy } from '@xylabs/lodash'
2
- import { AnyObject } from '@xyo-network/object'
2
+ import { EmptyObject } from '@xyo-network/object'
3
3
  // eslint-disable-next-line no-restricted-imports
4
4
  import type { ValueKeyIteratee } from 'lodash'
5
5
 
6
- export const deepBy = <T extends AnyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy): T => {
6
+ export const deepBy = <T extends EmptyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy): T => {
7
7
  if (Array.isArray(obj)) {
8
8
  return obj
9
9
  }
@@ -22,10 +22,10 @@ export const deepBy = <T extends AnyObject>(obj: T, predicate: ValueKeyIteratee<
22
22
  return merge({}, pickedNonObjects, processedObjects) as T
23
23
  }
24
24
 
25
- export const deepOmitUnderscoreFields = <T extends AnyObject>(obj: T) => {
25
+ export const deepOmitUnderscoreFields = <T extends EmptyObject>(obj: T): T => {
26
26
  return deepBy(obj, (_, key) => key.startsWith('_'), omitBy)
27
27
  }
28
28
 
29
- export const deepPickUnderscoreFields = <T extends AnyObject>(obj: T) => {
29
+ export const deepPickUnderscoreFields = <T extends EmptyObject>(obj: T): T => {
30
30
  return deepBy(obj, (_, key) => key.startsWith('_'), pickBy)
31
31
  }
package/src/sortFields.ts CHANGED
@@ -1,18 +1,15 @@
1
- import { AnyObject, isObject, StringKeyObject } from '@xyo-network/object'
1
+ import { AnyObject, EmptyObject, isObject } from '@xyo-network/object'
2
2
 
3
3
  //if an object, sub-sort
4
4
  const subSort = (value: unknown) => {
5
5
  return isObject(value) ? sortFields(value) : value
6
6
  }
7
7
 
8
- export const sortFields = <T extends AnyObject = AnyObject>(obj: T) => {
9
- const stringyObj = obj as StringKeyObject
10
-
11
- const result: StringKeyObject = {}
12
- Object.keys(obj)
13
- .sort()
14
- .forEach((key) => {
15
- result[key] = subSort(stringyObj[key])
16
- })
8
+ export const sortFields = <T extends EmptyObject>(obj: T) => {
9
+ const result: AnyObject = {}
10
+ const keys = Object.keys(obj) as (keyof T)[]
11
+ keys.sort().forEach((key: keyof T) => {
12
+ result[key] = subSort(obj[key])
13
+ })
17
14
  return result as T
18
15
  }
@@ -1,4 +0,0 @@
1
- export declare function toUint8Array(value: undefined, padLength?: number, base?: number): undefined;
2
- export declare function toUint8Array(value: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array;
3
- export declare function toUint8Array(value: ArrayBuffer | string | undefined, padLength?: number, base?: number): Uint8Array | undefined;
4
- //# sourceMappingURL=toUint8Array.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toUint8Array.d.ts","sourceRoot":"","sources":["../../src/toUint8Array.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;AACxG,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA"}
@@ -1,4 +0,0 @@
1
- export declare function toUint8Array(value: undefined, padLength?: number, base?: number): undefined;
2
- export declare function toUint8Array(value: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array;
3
- export declare function toUint8Array(value: ArrayBuffer | string | undefined, padLength?: number, base?: number): Uint8Array | undefined;
4
- //# sourceMappingURL=toUint8Array.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toUint8Array.d.ts","sourceRoot":"","sources":["../../src/toUint8Array.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;AACxG,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA"}
@@ -1,4 +0,0 @@
1
- export declare function toUint8Array(value: undefined, padLength?: number, base?: number): undefined;
2
- export declare function toUint8Array(value: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array;
3
- export declare function toUint8Array(value: ArrayBuffer | string | undefined, padLength?: number, base?: number): Uint8Array | undefined;
4
- //# sourceMappingURL=toUint8Array.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toUint8Array.d.ts","sourceRoot":"","sources":["../../src/toUint8Array.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;AACxG,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA"}
@@ -1,4 +0,0 @@
1
- export declare function toUint8Array(value: undefined, padLength?: number, base?: number): undefined;
2
- export declare function toUint8Array(value: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array;
3
- export declare function toUint8Array(value: ArrayBuffer | string | undefined, padLength?: number, base?: number): Uint8Array | undefined;
4
- //# sourceMappingURL=toUint8Array.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toUint8Array.d.ts","sourceRoot":"","sources":["../../src/toUint8Array.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;AACxG,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA"}
@@ -1,4 +0,0 @@
1
- export declare function toUint8Array(value: undefined, padLength?: number, base?: number): undefined;
2
- export declare function toUint8Array(value: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array;
3
- export declare function toUint8Array(value: ArrayBuffer | string | undefined, padLength?: number, base?: number): Uint8Array | undefined;
4
- //# sourceMappingURL=toUint8Array.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toUint8Array.d.ts","sourceRoot":"","sources":["../../src/toUint8Array.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;AACxG,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA"}
@@ -1,4 +0,0 @@
1
- export declare function toUint8Array(value: undefined, padLength?: number, base?: number): undefined;
2
- export declare function toUint8Array(value: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array;
3
- export declare function toUint8Array(value: ArrayBuffer | string | undefined, padLength?: number, base?: number): Uint8Array | undefined;
4
- //# sourceMappingURL=toUint8Array.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toUint8Array.d.ts","sourceRoot":"","sources":["../../src/toUint8Array.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;AACxG,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA"}
@@ -1,35 +0,0 @@
1
- import { base16, base58 } from '@scure/base'
2
- import { assertEx } from '@xylabs/assert'
3
- import { ifTypeOf } from '@xyo-network/typeof'
4
-
5
- const stringToUint8Array = (value: string, base = 16) => {
6
- switch (base) {
7
- case 16:
8
- return base16.decode((value.startsWith('0x') ? value.slice(2) : value).toUpperCase())
9
- case 58:
10
- return base58.decode(value)
11
- default:
12
- throw Error(`Unsupported base [${base}]`)
13
- }
14
- }
15
-
16
- export function toUint8Array(value: undefined, padLength?: number, base?: number): undefined
17
- export function toUint8Array(value: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array
18
- export function toUint8Array(value: ArrayBuffer | string | undefined, padLength?: number, base?: number): Uint8Array | undefined
19
- export function toUint8Array(value?: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array | undefined {
20
- if (value === undefined) return undefined
21
-
22
- let result: Uint8Array | undefined =
23
- ifTypeOf<string, Uint8Array>('string', value as string, (value) => stringToUint8Array(value, base)) ?? (value as Uint8Array)
24
-
25
- if (result === undefined) {
26
- throw Error(`toUint8Array - Unknown type: ${typeof value}`)
27
- }
28
-
29
- if (padLength && result.length < padLength) {
30
- result = new Uint8Array([...new Uint8Array(padLength - result.length), ...result])
31
- assertEx(result?.length <= padLength, 'Resulting length is greater than padLength')
32
- }
33
-
34
- return result
35
- }