@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.
- package/dist/browser/PayloadHasher.d.cts +15 -26
- package/dist/browser/PayloadHasher.d.cts.map +1 -1
- package/dist/browser/PayloadHasher.d.mts +15 -26
- package/dist/browser/PayloadHasher.d.mts.map +1 -1
- package/dist/browser/PayloadHasher.d.ts +15 -26
- package/dist/browser/PayloadHasher.d.ts.map +1 -1
- package/dist/browser/index.cjs +20 -68
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +0 -1
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +0 -1
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +0 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +20 -68
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/removeEmptyFields.d.cts +1 -1
- package/dist/browser/removeEmptyFields.d.cts.map +1 -1
- package/dist/browser/removeEmptyFields.d.mts +1 -1
- package/dist/browser/removeEmptyFields.d.mts.map +1 -1
- package/dist/browser/removeEmptyFields.d.ts +1 -1
- package/dist/browser/removeEmptyFields.d.ts.map +1 -1
- package/dist/browser/removeFields.d.cts +3 -4
- package/dist/browser/removeFields.d.cts.map +1 -1
- package/dist/browser/removeFields.d.mts +3 -4
- package/dist/browser/removeFields.d.mts.map +1 -1
- package/dist/browser/removeFields.d.ts +3 -4
- package/dist/browser/removeFields.d.ts.map +1 -1
- package/dist/browser/sortFields.d.cts +1 -2
- package/dist/browser/sortFields.d.cts.map +1 -1
- package/dist/browser/sortFields.d.mts +1 -2
- package/dist/browser/sortFields.d.mts.map +1 -1
- package/dist/browser/sortFields.d.ts +1 -2
- package/dist/browser/sortFields.d.ts.map +1 -1
- package/dist/node/PayloadHasher.d.cts +15 -26
- package/dist/node/PayloadHasher.d.cts.map +1 -1
- package/dist/node/PayloadHasher.d.mts +15 -26
- package/dist/node/PayloadHasher.d.mts.map +1 -1
- package/dist/node/PayloadHasher.d.ts +15 -26
- package/dist/node/PayloadHasher.d.ts.map +1 -1
- package/dist/node/index.cjs +21 -70
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +0 -1
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +0 -1
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +0 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +20 -68
- package/dist/node/index.js.map +1 -1
- package/dist/node/removeEmptyFields.d.cts +1 -1
- package/dist/node/removeEmptyFields.d.cts.map +1 -1
- package/dist/node/removeEmptyFields.d.mts +1 -1
- package/dist/node/removeEmptyFields.d.mts.map +1 -1
- package/dist/node/removeEmptyFields.d.ts +1 -1
- package/dist/node/removeEmptyFields.d.ts.map +1 -1
- package/dist/node/removeFields.d.cts +3 -4
- package/dist/node/removeFields.d.cts.map +1 -1
- package/dist/node/removeFields.d.mts +3 -4
- package/dist/node/removeFields.d.mts.map +1 -1
- package/dist/node/removeFields.d.ts +3 -4
- package/dist/node/removeFields.d.ts.map +1 -1
- package/dist/node/sortFields.d.cts +1 -2
- package/dist/node/sortFields.d.cts.map +1 -1
- package/dist/node/sortFields.d.mts +1 -2
- package/dist/node/sortFields.d.mts.map +1 -1
- package/dist/node/sortFields.d.ts +1 -2
- package/dist/node/sortFields.d.ts.map +1 -1
- package/package.json +7 -10
- package/src/PayloadHasher.ts +27 -62
- package/src/index.ts +0 -1
- package/src/removeEmptyFields.ts +3 -2
- package/src/removeFields.ts +4 -4
- package/src/sortFields.ts +7 -10
- package/dist/browser/toUint8Array.d.cts +0 -4
- package/dist/browser/toUint8Array.d.cts.map +0 -1
- package/dist/browser/toUint8Array.d.mts +0 -4
- package/dist/browser/toUint8Array.d.mts.map +0 -1
- package/dist/browser/toUint8Array.d.ts +0 -4
- package/dist/browser/toUint8Array.d.ts.map +0 -1
- package/dist/node/toUint8Array.d.cts +0 -4
- package/dist/node/toUint8Array.d.cts.map +0 -1
- package/dist/node/toUint8Array.d.mts +0 -4
- package/dist/node/toUint8Array.d.mts.map +0 -1
- package/dist/node/toUint8Array.d.ts +0 -4
- package/dist/node/toUint8Array.d.ts.map +0 -1
- package/src/toUint8Array.ts +0 -35
package/src/PayloadHasher.ts
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
40
|
+
return hexFromArrayBuffer(hashArray, { bitLength: 256 })
|
|
45
41
|
} catch (ex) {
|
|
46
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
69
|
-
return await Promise.all(objs.map<Promise<[T, string]>>(async (obj) => [obj, await PayloadHasher.hashAsync(obj
|
|
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
|
-
|
|
73
|
-
|
|
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
|
|
87
|
-
return await Promise.all(objs.map((obj) => this.hashAsync(obj
|
|
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
|
|
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
|
|
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
|
|
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
|
|
93
|
+
await Promise.all(objs.map(async (obj) => (result[await PayloadHasher.hashAsync(obj)] = obj)))
|
|
107
94
|
return result
|
|
108
95
|
}
|
|
109
96
|
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
126
|
-
|
|
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
package/src/removeEmptyFields.ts
CHANGED
|
@@ -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
|
|
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:
|
|
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>)
|
package/src/removeFields.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { isObject, mapValues, merge, omitBy, pickBy } from '@xylabs/lodash'
|
|
2
|
-
import {
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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"}
|
package/src/toUint8Array.ts
DELETED
|
@@ -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
|
-
}
|