@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/model.ts","../../src/PayloadHasher.ts","../../src/removeEmptyFields.ts","../../src/removeFields.ts","../../src/sortFields.ts","../../src/toUint8Array.ts"],"sourcesContent":["/** @deprecated use @xylabs/hex instead */\nconst hexRegex = /[0-9a-f]+/i\n\n/** @deprecated use @xylabs/hex instead */\nexport type Hex = string\n\n/** @deprecated use @xylabs/hex instead */\nexport type Hash = Hex\n\n/** @deprecated use @xylabs/hex instead */\nexport const isHex = (value: string): value is Hex => hexRegex.test(value)\n","import { asHash, Hash } from '@xylabs/hex'\nimport { subtle } from '@xylabs/platform'\nimport { AnyObject, ObjectWrapper } from '@xyo-network/object'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { sha256 } from 'hash-wasm'\nimport shajs from 'sha.js'\n\nimport { removeEmptyFields } from './removeEmptyFields'\nimport { deepOmitUnderscoreFields } from './removeFields'\nimport { sortFields } from './sortFields'\nimport { toUint8Array } from './toUint8Array'\n\nconst wasmSupportStatic = new WasmSupport(['bigInt'])\n\nexport class PayloadHasher<T extends AnyObject = AnyObject> extends ObjectWrapper<T> {\n static allowSubtle = true\n static readonly wasmInitialized = wasmSupportStatic.initialize()\n static readonly wasmSupport = wasmSupportStatic\n\n static async filterExclude<T extends AnyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n return (await this.hashPairs(objs)).filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0])\n }\n\n static async filterInclude<T extends AnyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n return (await this.hashPairs(objs)).filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0])\n }\n\n static async find<T extends AnyObject>(objs: T[] = [], hash: Hash): Promise<T | undefined> {\n return (await this.hashPairs(objs)).find(([_, objHash]) => objHash === hash)?.[0]\n }\n\n static async hashAsync<T extends AnyObject>(obj: T, encoding?: undefined): Promise<Hash>\n static async hashAsync<T extends AnyObject>(obj: T, encoding: 'buffer'): Promise<ArrayBuffer>\n static async hashAsync<T extends AnyObject>(obj: T, encoding: 'hex'): Promise<Hash>\n static async hashAsync<T extends AnyObject>(obj: T, encoding?: 'buffer' | 'hex'): Promise<Hash | ArrayBuffer> {\n if (PayloadHasher.allowSubtle) {\n try {\n const enc = new TextEncoder()\n const stringToHash = this.stringifyHashFields(obj)\n const b = enc.encode(stringToHash)\n const hashArray = await subtle.digest('SHA-256', b)\n return encoding === 'buffer' ? hashArray : asHash(hashArray, 256, true)\n } catch (ex) {\n console.log('Setting allowSubtle to false')\n PayloadHasher.allowSubtle = false\n }\n }\n\n await this.wasmInitialized\n if (this.wasmSupport.canUseWasm) {\n const stringToHash = this.stringifyHashFields(obj)\n try {\n const hash = asHash(await sha256(stringToHash), 256, true)\n return encoding === 'buffer' ? toUint8Array(hash) : hash\n } catch (ex) {\n this.wasmSupport.allowWasm = false\n }\n }\n return this.hashSync(obj)\n }\n\n static hashFields<T extends AnyObject>(obj: T): T {\n return sortFields(removeEmptyFields(deepOmitUnderscoreFields(obj)))\n }\n\n static async hashPairs<T extends AnyObject>(objs: T[]): Promise<[T, Hash][]> {\n return await Promise.all(objs.map<Promise<[T, string]>>(async (obj) => [obj, await PayloadHasher.hashAsync(obj, 'hex')]))\n }\n\n /** @deprecated pass encoding [hex,buffer] */\n static hashSync<T extends AnyObject>(obj: T, encoding?: undefined): Hash\n static hashSync<T extends AnyObject>(obj: T, encoding: 'buffer'): ArrayBuffer\n static hashSync<T extends AnyObject>(obj: T, encoding: 'hex'): Hash\n static hashSync<T extends AnyObject>(obj: T, encoding?: 'buffer' | 'hex'): Hash | ArrayBuffer {\n const buffer = shajs('sha256').update(this.stringifyHashFields(obj)).digest()\n switch (encoding) {\n case 'buffer':\n return buffer.buffer\n default:\n return asHash(buffer.toString('hex'), 256, true)\n }\n }\n\n static async hashes<T extends AnyObject>(objs: T[]): Promise<Hash[]> {\n return await Promise.all(objs.map((obj) => this.hashAsync(obj, 'hex')))\n }\n\n /** @function jsonPayload Returns a clone of the payload that is JSON safe */\n static jsonPayload<T extends AnyObject>(\n /** @param payload The payload to process */\n payload: T,\n /** @param meta Keeps underscore (meta) fields if set to true */\n meta = false,\n ): T {\n return sortFields(removeEmptyFields(meta ? payload : deepOmitUnderscoreFields(payload)))\n }\n\n static stringifyHashFields<T extends AnyObject>(obj: T) {\n return JSON.stringify(this.hashFields(obj))\n }\n\n static async toMap<T extends AnyObject>(objs: T[]): Promise<Record<Hash, T>> {\n const result: Record<string, T> = {}\n await Promise.all(objs.map(async (obj) => (result[await PayloadHasher.hashAsync(obj, 'hex')] = obj)))\n return result\n }\n\n /** @deprecated pass encoding [hex,buffer] */\n async hashAsync(encoding?: undefined): Promise<Hash>\n async hashAsync(encoding: 'buffer'): Promise<ArrayBuffer>\n async hashAsync(encoding: 'hex'): Promise<Hash>\n async hashAsync(encoding?: 'buffer' | 'hex'): Promise<Hash | ArrayBuffer> {\n switch (encoding) {\n case 'buffer':\n return await PayloadHasher.hashAsync(this.obj, encoding)\n case 'hex':\n return await PayloadHasher.hashAsync(this.obj, encoding)\n default:\n return await PayloadHasher.hashAsync(this.obj, encoding)\n }\n }\n\n /** @deprecated pass encoding [hex,buffer] */\n hashSync(encoding?: undefined): Hash\n hashSync(encoding: 'buffer'): ArrayBuffer\n hashSync(encoding: 'hex'): Hash\n hashSync(encoding?: 'hex' | 'buffer'): Hash | ArrayBuffer {\n switch (encoding) {\n case 'hex':\n return PayloadHasher.hashSync(this.obj, encoding)\n case 'buffer':\n return PayloadHasher.hashSync(this.obj, encoding)\n default:\n return PayloadHasher.hashSync(this.obj, encoding)\n }\n }\n\n /** @function jsonPayload Returns a clone of the payload that is JSON safe */\n jsonPayload(\n /** @param meta Keeps underscore (meta) fields if set to true */\n meta = false,\n ): T {\n return PayloadHasher.jsonPayload(this.obj, meta)\n }\n}\n","import { typeOf } from '@xyo-network/typeof'\n\nexport const removeEmptyFields = <T extends Record<string, unknown>>(obj: T) => {\n if (obj === null || Array.isArray(obj)) return obj\n\n const newObject: Record<string, unknown> = {}\n Object.entries(obj).forEach(([key, value]) => {\n if (typeOf(value) === 'object') {\n newObject[key] = removeEmptyFields(value as Record<string, unknown>)\n } else if (value !== undefined) {\n newObject[key] = value\n }\n })\n return newObject as T\n}\n","import { isObject, mapValues, merge, omitBy, pickBy } from '@xylabs/lodash'\nimport { AnyObject } from '@xyo-network/object'\n// eslint-disable-next-line no-restricted-imports\nimport type { ValueKeyIteratee } from 'lodash'\n\nexport const deepBy = <T extends AnyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy): T => {\n if (Array.isArray(obj)) {\n return obj\n }\n\n //pick the child objects\n const onlyObjects = pickBy<T>(obj, isObject)\n\n //pick the child non-objects\n const nonObjects = pickBy<T>(obj, (value) => !isObject(value))\n\n const pickedObjects = omitBy(onlyObjects, predicate)\n const pickedNonObjects = omitBy(nonObjects, predicate)\n\n const processedObjects = mapValues(pickedObjects, (obj: T) => deepBy(obj, predicate, func))\n\n return merge({}, pickedNonObjects, processedObjects) as T\n}\n\nexport const deepOmitUnderscoreFields = <T extends AnyObject>(obj: T) => {\n return deepBy(obj, (_, key) => key.startsWith('_'), omitBy)\n}\n\nexport const deepPickUnderscoreFields = <T extends AnyObject>(obj: T) => {\n return deepBy(obj, (_, key) => key.startsWith('_'), pickBy)\n}\n","import { AnyObject, isObject, StringKeyObject } from '@xyo-network/object'\n\n//if an object, sub-sort\nconst subSort = (value: unknown) => {\n return isObject(value) ? sortFields(value) : value\n}\n\nexport const sortFields = <T extends AnyObject = AnyObject>(obj: T) => {\n const stringyObj = obj as StringKeyObject\n\n const result: StringKeyObject = {}\n Object.keys(obj)\n .sort()\n .forEach((key) => {\n result[key] = subSort(stringyObj[key])\n })\n return result as T\n}\n","import { base16, base58 } from '@scure/base'\nimport { assertEx } from '@xylabs/assert'\nimport { ifTypeOf } from '@xyo-network/typeof'\n\nconst stringToUint8Array = (value: string, base = 16) => {\n switch (base) {\n case 16:\n return base16.decode((value.startsWith('0x') ? value.slice(2) : value).toUpperCase())\n case 58:\n return base58.decode(value)\n default:\n throw Error(`Unsupported base [${base}]`)\n }\n}\n\nexport function toUint8Array(value: undefined, padLength?: number, base?: number): undefined\nexport function toUint8Array(value: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array\nexport function toUint8Array(value: ArrayBuffer | string | undefined, padLength?: number, base?: number): Uint8Array | undefined\nexport function toUint8Array(value?: ArrayBuffer | string, padLength?: number, base?: number): Uint8Array | undefined {\n if (value === undefined) return undefined\n\n let result: Uint8Array | undefined =\n ifTypeOf<string, Uint8Array>('string', value as string, (value) => stringToUint8Array(value, base)) ?? (value as Uint8Array)\n\n if (result === undefined) {\n throw Error(`toUint8Array - Unknown type: ${typeof value}`)\n }\n\n if (padLength && result.length < padLength) {\n result = new Uint8Array([...new Uint8Array(padLength - result.length), ...result])\n assertEx(result?.length <= padLength, 'Resulting length is greater than padLength')\n }\n\n return result\n}\n"],"mappings":"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","names":["obj","isObject","value"]}
|
|
1
|
+
{"version":3,"sources":["../../src/model.ts","../../src/PayloadHasher.ts","../../src/removeEmptyFields.ts","../../src/removeFields.ts","../../src/sortFields.ts"],"sourcesContent":["/** @deprecated use @xylabs/hex instead */\nconst hexRegex = /[0-9a-f]+/i\n\n/** @deprecated use @xylabs/hex instead */\nexport type Hex = string\n\n/** @deprecated use @xylabs/hex instead */\nexport type Hash = Hex\n\n/** @deprecated use @xylabs/hex instead */\nexport const isHex = (value: string): value is Hex => hexRegex.test(value)\n","import { asHash, Hash, hexFromArrayBuffer } from '@xylabs/hex'\nimport { subtle } from '@xylabs/platform'\nimport { EmptyObject, ObjectWrapper } from '@xyo-network/object'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { sha256 } from 'hash-wasm'\nimport shajs from 'sha.js'\n\nimport { removeEmptyFields } from './removeEmptyFields'\nimport { deepOmitUnderscoreFields } from './removeFields'\nimport { sortFields } from './sortFields'\n\nconst wasmSupportStatic = new WasmSupport(['bigInt'])\n\nexport class PayloadHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {\n static allowSubtle = true\n static readonly wasmInitialized = wasmSupportStatic.initialize()\n static readonly wasmSupport = wasmSupportStatic\n\n static async filterExclude<T extends EmptyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n return (await this.hashPairs(objs)).filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0])\n }\n\n static async filterInclude<T extends EmptyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n return (await this.hashPairs(objs)).filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0])\n }\n\n static async find<T extends EmptyObject>(objs: T[] = [], hash: Hash): Promise<T | undefined> {\n return (await this.hashPairs(objs)).find(([_, objHash]) => objHash === hash)?.[0]\n }\n\n static async hashAsync<T extends EmptyObject>(obj: T): Promise<Hash> {\n if (PayloadHasher.allowSubtle) {\n try {\n const enc = new TextEncoder()\n const stringToHash = this.stringifyHashFields(obj)\n const b = enc.encode(stringToHash)\n const hashArray = await subtle.digest('SHA-256', b)\n return hexFromArrayBuffer(hashArray, { bitLength: 256 })\n } catch (ex) {\n const error = ex as Error\n console.error(`Setting allowSubtle to false [${error.message}]`)\n console.log(error.stack)\n PayloadHasher.allowSubtle = false\n }\n }\n\n await this.wasmInitialized\n if (this.wasmSupport.canUseWasm) {\n const stringToHash = this.stringifyHashFields(obj)\n try {\n return asHash(await sha256(stringToHash), true)\n } catch (ex) {\n this.wasmSupport.allowWasm = false\n }\n }\n return this.hashSync(obj)\n }\n\n static hashFields<T extends EmptyObject>(obj: T): T {\n return sortFields(removeEmptyFields(deepOmitUnderscoreFields(obj)))\n }\n\n static async hashPairs<T extends EmptyObject>(objs: T[]): Promise<[T, Hash][]> {\n return await Promise.all(objs.map<Promise<[T, string]>>(async (obj) => [obj, await PayloadHasher.hashAsync(obj)]))\n }\n\n static hashSync<T extends EmptyObject>(obj: T): Hash {\n return asHash(shajs('sha256').update(this.stringifyHashFields(obj)).digest().toString('hex'), true)\n }\n\n static async hashes<T extends EmptyObject>(objs: T[]): Promise<Hash[]> {\n return await Promise.all(objs.map((obj) => this.hashAsync(obj)))\n }\n\n /** @function jsonPayload Returns a clone of the payload that is JSON safe */\n static jsonPayload<T extends EmptyObject>(\n /** @param payload The payload to process */\n payload: T,\n /** @param meta Keeps underscore (meta) fields if set to true */\n meta = false,\n ): T {\n return sortFields(removeEmptyFields(meta ? payload : deepOmitUnderscoreFields(payload)))\n }\n\n static stringifyHashFields<T extends EmptyObject>(obj: T) {\n return JSON.stringify(this.hashFields(obj))\n }\n\n static async toMap<T extends EmptyObject>(objs: T[]): Promise<Record<Hash, T>> {\n const result: Record<string, T> = {}\n await Promise.all(objs.map(async (obj) => (result[await PayloadHasher.hashAsync(obj)] = obj)))\n return result\n }\n\n async hashAsync(): Promise<Hash> {\n return await PayloadHasher.hashAsync(this.obj)\n }\n\n hashSync(): Hash {\n return PayloadHasher.hashSync(this.obj)\n }\n\n /** @function jsonPayload Returns a clone of the payload that is JSON safe */\n jsonPayload(\n /** @param meta Keeps underscore (meta) fields if set to true */\n meta = false,\n ): T {\n return PayloadHasher.jsonPayload(this.obj, meta)\n }\n}\n","import { AnyObject, EmptyObject } from '@xyo-network/object'\nimport { typeOf } from '@xyo-network/typeof'\n\nexport const removeEmptyFields = <T extends EmptyObject>(obj: T): T => {\n if (obj === null || Array.isArray(obj)) return obj\n\n const newObject: AnyObject = {}\n Object.entries(obj).forEach(([key, value]) => {\n if (typeOf(value) === 'object') {\n newObject[key] = removeEmptyFields(value as Record<string, unknown>)\n } else if (value !== undefined) {\n newObject[key] = value\n }\n })\n return newObject as T\n}\n","import { isObject, mapValues, merge, omitBy, pickBy } from '@xylabs/lodash'\nimport { EmptyObject } from '@xyo-network/object'\n// eslint-disable-next-line no-restricted-imports\nimport type { ValueKeyIteratee } from 'lodash'\n\nexport const deepBy = <T extends EmptyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy): T => {\n if (Array.isArray(obj)) {\n return obj\n }\n\n //pick the child objects\n const onlyObjects = pickBy<T>(obj, isObject)\n\n //pick the child non-objects\n const nonObjects = pickBy<T>(obj, (value) => !isObject(value))\n\n const pickedObjects = omitBy(onlyObjects, predicate)\n const pickedNonObjects = omitBy(nonObjects, predicate)\n\n const processedObjects = mapValues(pickedObjects, (obj: T) => deepBy(obj, predicate, func))\n\n return merge({}, pickedNonObjects, processedObjects) as T\n}\n\nexport const deepOmitUnderscoreFields = <T extends EmptyObject>(obj: T): T => {\n return deepBy(obj, (_, key) => key.startsWith('_'), omitBy)\n}\n\nexport const deepPickUnderscoreFields = <T extends EmptyObject>(obj: T): T => {\n return deepBy(obj, (_, key) => key.startsWith('_'), pickBy)\n}\n","import { AnyObject, EmptyObject, isObject } from '@xyo-network/object'\n\n//if an object, sub-sort\nconst subSort = (value: unknown) => {\n return isObject(value) ? sortFields(value) : value\n}\n\nexport const sortFields = <T extends EmptyObject>(obj: T) => {\n const result: AnyObject = {}\n const keys = Object.keys(obj) as (keyof T)[]\n keys.sort().forEach((key: keyof T) => {\n result[key] = subSort(obj[key])\n })\n return result as T\n}\n"],"mappings":"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","names":["obj","isObject"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const removeEmptyFields: <T extends
|
|
1
|
+
export declare const removeEmptyFields: <T extends object>(obj: T) => T;
|
|
2
2
|
//# sourceMappingURL=removeEmptyFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,iCAY7B,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const removeEmptyFields: <T extends
|
|
1
|
+
export declare const removeEmptyFields: <T extends object>(obj: T) => T;
|
|
2
2
|
//# sourceMappingURL=removeEmptyFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,iCAY7B,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const removeEmptyFields: <T extends
|
|
1
|
+
export declare const removeEmptyFields: <T extends object>(obj: T) => T;
|
|
2
2
|
//# sourceMappingURL=removeEmptyFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,iCAY7B,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { omitBy, pickBy } from '@xylabs/lodash';
|
|
2
|
-
import { AnyObject } from '@xyo-network/object';
|
|
3
2
|
import type { ValueKeyIteratee } from 'lodash';
|
|
4
|
-
export declare const deepBy: <T extends
|
|
5
|
-
export declare const deepOmitUnderscoreFields: <T extends
|
|
6
|
-
export declare const deepPickUnderscoreFields: <T extends
|
|
3
|
+
export declare const deepBy: <T extends object>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
|
|
4
|
+
export declare const deepOmitUnderscoreFields: <T extends object>(obj: T) => T;
|
|
5
|
+
export declare const deepPickUnderscoreFields: <T extends object>(obj: T) => T;
|
|
7
6
|
//# sourceMappingURL=removeFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAE9C,eAAO,MAAM,MAAM,mEAAyE,aAAa,GAAG,aAAa,MAiBxH,CAAA;AAED,eAAO,MAAM,wBAAwB,iCAEpC,CAAA;AAED,eAAO,MAAM,wBAAwB,iCAEpC,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { omitBy, pickBy } from '@xylabs/lodash';
|
|
2
|
-
import { AnyObject } from '@xyo-network/object';
|
|
3
2
|
import type { ValueKeyIteratee } from 'lodash';
|
|
4
|
-
export declare const deepBy: <T extends
|
|
5
|
-
export declare const deepOmitUnderscoreFields: <T extends
|
|
6
|
-
export declare const deepPickUnderscoreFields: <T extends
|
|
3
|
+
export declare const deepBy: <T extends object>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
|
|
4
|
+
export declare const deepOmitUnderscoreFields: <T extends object>(obj: T) => T;
|
|
5
|
+
export declare const deepPickUnderscoreFields: <T extends object>(obj: T) => T;
|
|
7
6
|
//# sourceMappingURL=removeFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAE9C,eAAO,MAAM,MAAM,mEAAyE,aAAa,GAAG,aAAa,MAiBxH,CAAA;AAED,eAAO,MAAM,wBAAwB,iCAEpC,CAAA;AAED,eAAO,MAAM,wBAAwB,iCAEpC,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { omitBy, pickBy } from '@xylabs/lodash';
|
|
2
|
-
import { AnyObject } from '@xyo-network/object';
|
|
3
2
|
import type { ValueKeyIteratee } from 'lodash';
|
|
4
|
-
export declare const deepBy: <T extends
|
|
5
|
-
export declare const deepOmitUnderscoreFields: <T extends
|
|
6
|
-
export declare const deepPickUnderscoreFields: <T extends
|
|
3
|
+
export declare const deepBy: <T extends object>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
|
|
4
|
+
export declare const deepOmitUnderscoreFields: <T extends object>(obj: T) => T;
|
|
5
|
+
export declare const deepPickUnderscoreFields: <T extends object>(obj: T) => T;
|
|
7
6
|
//# sourceMappingURL=removeFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAE9C,eAAO,MAAM,MAAM,mEAAyE,aAAa,GAAG,aAAa,MAiBxH,CAAA;AAED,eAAO,MAAM,wBAAwB,iCAEpC,CAAA;AAED,eAAO,MAAM,wBAAwB,iCAEpC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,UAAU,iCAOtB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,UAAU,iCAOtB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,UAAU,iCAOtB,CAAA"}
|
|
@@ -1,39 +1,28 @@
|
|
|
1
1
|
import { Hash } from '@xylabs/hex';
|
|
2
|
-
import {
|
|
2
|
+
import { EmptyObject, ObjectWrapper } from '@xyo-network/object';
|
|
3
3
|
import { WasmSupport } from '@xyo-network/wasm';
|
|
4
|
-
export declare class PayloadHasher<T extends
|
|
4
|
+
export declare class PayloadHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {
|
|
5
5
|
static allowSubtle: boolean;
|
|
6
6
|
static readonly wasmInitialized: Promise<void>;
|
|
7
7
|
static readonly wasmSupport: WasmSupport;
|
|
8
|
-
static filterExclude<T extends
|
|
9
|
-
static filterInclude<T extends
|
|
10
|
-
static find<T extends
|
|
11
|
-
static hashAsync<T extends
|
|
12
|
-
static
|
|
13
|
-
static
|
|
14
|
-
static
|
|
15
|
-
static
|
|
16
|
-
/** @deprecated pass encoding [hex,buffer] */
|
|
17
|
-
static hashSync<T extends AnyObject>(obj: T, encoding?: undefined): Hash;
|
|
18
|
-
static hashSync<T extends AnyObject>(obj: T, encoding: 'buffer'): ArrayBuffer;
|
|
19
|
-
static hashSync<T extends AnyObject>(obj: T, encoding: 'hex'): Hash;
|
|
20
|
-
static hashes<T extends AnyObject>(objs: T[]): Promise<Hash[]>;
|
|
8
|
+
static filterExclude<T extends EmptyObject>(objs: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
|
|
9
|
+
static filterInclude<T extends EmptyObject>(objs: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
|
|
10
|
+
static find<T extends EmptyObject>(objs: T[] | undefined, hash: Hash): Promise<T | undefined>;
|
|
11
|
+
static hashAsync<T extends EmptyObject>(obj: T): Promise<Hash>;
|
|
12
|
+
static hashFields<T extends EmptyObject>(obj: T): T;
|
|
13
|
+
static hashPairs<T extends EmptyObject>(objs: T[]): Promise<[T, Hash][]>;
|
|
14
|
+
static hashSync<T extends EmptyObject>(obj: T): Hash;
|
|
15
|
+
static hashes<T extends EmptyObject>(objs: T[]): Promise<Hash[]>;
|
|
21
16
|
/** @function jsonPayload Returns a clone of the payload that is JSON safe */
|
|
22
|
-
static jsonPayload<T extends
|
|
17
|
+
static jsonPayload<T extends EmptyObject>(
|
|
23
18
|
/** @param payload The payload to process */
|
|
24
19
|
payload: T,
|
|
25
20
|
/** @param meta Keeps underscore (meta) fields if set to true */
|
|
26
21
|
meta?: boolean): T;
|
|
27
|
-
static stringifyHashFields<T extends
|
|
28
|
-
static toMap<T extends
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
hashAsync(encoding: 'buffer'): Promise<ArrayBuffer>;
|
|
32
|
-
hashAsync(encoding: 'hex'): Promise<Hash>;
|
|
33
|
-
/** @deprecated pass encoding [hex,buffer] */
|
|
34
|
-
hashSync(encoding?: undefined): Hash;
|
|
35
|
-
hashSync(encoding: 'buffer'): ArrayBuffer;
|
|
36
|
-
hashSync(encoding: 'hex'): Hash;
|
|
22
|
+
static stringifyHashFields<T extends EmptyObject>(obj: T): string;
|
|
23
|
+
static toMap<T extends EmptyObject>(objs: T[]): Promise<Record<Hash, T>>;
|
|
24
|
+
hashAsync(): Promise<Hash>;
|
|
25
|
+
hashSync(): Hash;
|
|
37
26
|
/** @function jsonPayload Returns a clone of the payload that is JSON safe */
|
|
38
27
|
jsonPayload(
|
|
39
28
|
/** @param meta Keeps underscore (meta) fields if set to true */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayloadHasher.d.ts","sourceRoot":"","sources":["../../src/PayloadHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"PayloadHasher.d.ts","sourceRoot":"","sources":["../../src/PayloadHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAsB,MAAM,aAAa,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAU/C,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACtF,MAAM,CAAC,WAAW,UAAO;IACzB,MAAM,CAAC,QAAQ,CAAC,eAAe,gBAAiC;IAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAoB;WAElC,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAI/E,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BpE,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;WAItC,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IAI9E,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;WAIvC,MAAM,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAItE,6EAA6E;IAC7E,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,WAAW;IACtC,4CAA4C;IAC5C,OAAO,EAAE,CAAC;IACV,gEAAgE;IAChE,IAAI,UAAQ,GACX,CAAC;IAIJ,MAAM,CAAC,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC;WAI3C,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAMxE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,QAAQ,IAAI,IAAI;IAIhB,6EAA6E;IAC7E,WAAW;IACT,gEAAgE;IAChE,IAAI,UAAQ,GACX,CAAC;CAGL"}
|
|
@@ -1,39 +1,28 @@
|
|
|
1
1
|
import { Hash } from '@xylabs/hex';
|
|
2
|
-
import {
|
|
2
|
+
import { EmptyObject, ObjectWrapper } from '@xyo-network/object';
|
|
3
3
|
import { WasmSupport } from '@xyo-network/wasm';
|
|
4
|
-
export declare class PayloadHasher<T extends
|
|
4
|
+
export declare class PayloadHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {
|
|
5
5
|
static allowSubtle: boolean;
|
|
6
6
|
static readonly wasmInitialized: Promise<void>;
|
|
7
7
|
static readonly wasmSupport: WasmSupport;
|
|
8
|
-
static filterExclude<T extends
|
|
9
|
-
static filterInclude<T extends
|
|
10
|
-
static find<T extends
|
|
11
|
-
static hashAsync<T extends
|
|
12
|
-
static
|
|
13
|
-
static
|
|
14
|
-
static
|
|
15
|
-
static
|
|
16
|
-
/** @deprecated pass encoding [hex,buffer] */
|
|
17
|
-
static hashSync<T extends AnyObject>(obj: T, encoding?: undefined): Hash;
|
|
18
|
-
static hashSync<T extends AnyObject>(obj: T, encoding: 'buffer'): ArrayBuffer;
|
|
19
|
-
static hashSync<T extends AnyObject>(obj: T, encoding: 'hex'): Hash;
|
|
20
|
-
static hashes<T extends AnyObject>(objs: T[]): Promise<Hash[]>;
|
|
8
|
+
static filterExclude<T extends EmptyObject>(objs: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
|
|
9
|
+
static filterInclude<T extends EmptyObject>(objs: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
|
|
10
|
+
static find<T extends EmptyObject>(objs: T[] | undefined, hash: Hash): Promise<T | undefined>;
|
|
11
|
+
static hashAsync<T extends EmptyObject>(obj: T): Promise<Hash>;
|
|
12
|
+
static hashFields<T extends EmptyObject>(obj: T): T;
|
|
13
|
+
static hashPairs<T extends EmptyObject>(objs: T[]): Promise<[T, Hash][]>;
|
|
14
|
+
static hashSync<T extends EmptyObject>(obj: T): Hash;
|
|
15
|
+
static hashes<T extends EmptyObject>(objs: T[]): Promise<Hash[]>;
|
|
21
16
|
/** @function jsonPayload Returns a clone of the payload that is JSON safe */
|
|
22
|
-
static jsonPayload<T extends
|
|
17
|
+
static jsonPayload<T extends EmptyObject>(
|
|
23
18
|
/** @param payload The payload to process */
|
|
24
19
|
payload: T,
|
|
25
20
|
/** @param meta Keeps underscore (meta) fields if set to true */
|
|
26
21
|
meta?: boolean): T;
|
|
27
|
-
static stringifyHashFields<T extends
|
|
28
|
-
static toMap<T extends
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
hashAsync(encoding: 'buffer'): Promise<ArrayBuffer>;
|
|
32
|
-
hashAsync(encoding: 'hex'): Promise<Hash>;
|
|
33
|
-
/** @deprecated pass encoding [hex,buffer] */
|
|
34
|
-
hashSync(encoding?: undefined): Hash;
|
|
35
|
-
hashSync(encoding: 'buffer'): ArrayBuffer;
|
|
36
|
-
hashSync(encoding: 'hex'): Hash;
|
|
22
|
+
static stringifyHashFields<T extends EmptyObject>(obj: T): string;
|
|
23
|
+
static toMap<T extends EmptyObject>(objs: T[]): Promise<Record<Hash, T>>;
|
|
24
|
+
hashAsync(): Promise<Hash>;
|
|
25
|
+
hashSync(): Hash;
|
|
37
26
|
/** @function jsonPayload Returns a clone of the payload that is JSON safe */
|
|
38
27
|
jsonPayload(
|
|
39
28
|
/** @param meta Keeps underscore (meta) fields if set to true */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayloadHasher.d.ts","sourceRoot":"","sources":["../../src/PayloadHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"PayloadHasher.d.ts","sourceRoot":"","sources":["../../src/PayloadHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAsB,MAAM,aAAa,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAU/C,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACtF,MAAM,CAAC,WAAW,UAAO;IACzB,MAAM,CAAC,QAAQ,CAAC,eAAe,gBAAiC;IAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAoB;WAElC,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAI/E,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BpE,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;WAItC,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IAI9E,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;WAIvC,MAAM,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAItE,6EAA6E;IAC7E,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,WAAW;IACtC,4CAA4C;IAC5C,OAAO,EAAE,CAAC;IACV,gEAAgE;IAChE,IAAI,UAAQ,GACX,CAAC;IAIJ,MAAM,CAAC,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC;WAI3C,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAMxE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,QAAQ,IAAI,IAAI;IAIhB,6EAA6E;IAC7E,WAAW;IACT,gEAAgE;IAChE,IAAI,UAAQ,GACX,CAAC;CAGL"}
|
|
@@ -1,39 +1,28 @@
|
|
|
1
1
|
import { Hash } from '@xylabs/hex';
|
|
2
|
-
import {
|
|
2
|
+
import { EmptyObject, ObjectWrapper } from '@xyo-network/object';
|
|
3
3
|
import { WasmSupport } from '@xyo-network/wasm';
|
|
4
|
-
export declare class PayloadHasher<T extends
|
|
4
|
+
export declare class PayloadHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {
|
|
5
5
|
static allowSubtle: boolean;
|
|
6
6
|
static readonly wasmInitialized: Promise<void>;
|
|
7
7
|
static readonly wasmSupport: WasmSupport;
|
|
8
|
-
static filterExclude<T extends
|
|
9
|
-
static filterInclude<T extends
|
|
10
|
-
static find<T extends
|
|
11
|
-
static hashAsync<T extends
|
|
12
|
-
static
|
|
13
|
-
static
|
|
14
|
-
static
|
|
15
|
-
static
|
|
16
|
-
/** @deprecated pass encoding [hex,buffer] */
|
|
17
|
-
static hashSync<T extends AnyObject>(obj: T, encoding?: undefined): Hash;
|
|
18
|
-
static hashSync<T extends AnyObject>(obj: T, encoding: 'buffer'): ArrayBuffer;
|
|
19
|
-
static hashSync<T extends AnyObject>(obj: T, encoding: 'hex'): Hash;
|
|
20
|
-
static hashes<T extends AnyObject>(objs: T[]): Promise<Hash[]>;
|
|
8
|
+
static filterExclude<T extends EmptyObject>(objs: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
|
|
9
|
+
static filterInclude<T extends EmptyObject>(objs: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
|
|
10
|
+
static find<T extends EmptyObject>(objs: T[] | undefined, hash: Hash): Promise<T | undefined>;
|
|
11
|
+
static hashAsync<T extends EmptyObject>(obj: T): Promise<Hash>;
|
|
12
|
+
static hashFields<T extends EmptyObject>(obj: T): T;
|
|
13
|
+
static hashPairs<T extends EmptyObject>(objs: T[]): Promise<[T, Hash][]>;
|
|
14
|
+
static hashSync<T extends EmptyObject>(obj: T): Hash;
|
|
15
|
+
static hashes<T extends EmptyObject>(objs: T[]): Promise<Hash[]>;
|
|
21
16
|
/** @function jsonPayload Returns a clone of the payload that is JSON safe */
|
|
22
|
-
static jsonPayload<T extends
|
|
17
|
+
static jsonPayload<T extends EmptyObject>(
|
|
23
18
|
/** @param payload The payload to process */
|
|
24
19
|
payload: T,
|
|
25
20
|
/** @param meta Keeps underscore (meta) fields if set to true */
|
|
26
21
|
meta?: boolean): T;
|
|
27
|
-
static stringifyHashFields<T extends
|
|
28
|
-
static toMap<T extends
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
hashAsync(encoding: 'buffer'): Promise<ArrayBuffer>;
|
|
32
|
-
hashAsync(encoding: 'hex'): Promise<Hash>;
|
|
33
|
-
/** @deprecated pass encoding [hex,buffer] */
|
|
34
|
-
hashSync(encoding?: undefined): Hash;
|
|
35
|
-
hashSync(encoding: 'buffer'): ArrayBuffer;
|
|
36
|
-
hashSync(encoding: 'hex'): Hash;
|
|
22
|
+
static stringifyHashFields<T extends EmptyObject>(obj: T): string;
|
|
23
|
+
static toMap<T extends EmptyObject>(objs: T[]): Promise<Record<Hash, T>>;
|
|
24
|
+
hashAsync(): Promise<Hash>;
|
|
25
|
+
hashSync(): Hash;
|
|
37
26
|
/** @function jsonPayload Returns a clone of the payload that is JSON safe */
|
|
38
27
|
jsonPayload(
|
|
39
28
|
/** @param meta Keeps underscore (meta) fields if set to true */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayloadHasher.d.ts","sourceRoot":"","sources":["../../src/PayloadHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"PayloadHasher.d.ts","sourceRoot":"","sources":["../../src/PayloadHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAsB,MAAM,aAAa,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAU/C,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACtF,MAAM,CAAC,WAAW,UAAO;IACzB,MAAM,CAAC,QAAQ,CAAC,eAAe,gBAAiC;IAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAoB;WAElC,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAI/E,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BpE,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;WAItC,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IAI9E,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;WAIvC,MAAM,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAItE,6EAA6E;IAC7E,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,WAAW;IACtC,4CAA4C;IAC5C,OAAO,EAAE,CAAC;IACV,gEAAgE;IAChE,IAAI,UAAQ,GACX,CAAC;IAIJ,MAAM,CAAC,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC;WAI3C,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAMxE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,QAAQ,IAAI,IAAI;IAIhB,6EAA6E;IAC7E,WAAW;IACT,gEAAgE;IAChE,IAAI,UAAQ,GACX,CAAC;CAGL"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -36,8 +36,7 @@ __export(src_exports, {
|
|
|
36
36
|
deepPickUnderscoreFields: () => deepPickUnderscoreFields,
|
|
37
37
|
isHex: () => isHex,
|
|
38
38
|
removeEmptyFields: () => removeEmptyFields,
|
|
39
|
-
sortFields: () => sortFields
|
|
40
|
-
toUint8Array: () => toUint8Array
|
|
39
|
+
sortFields: () => sortFields
|
|
41
40
|
});
|
|
42
41
|
module.exports = __toCommonJS(src_exports);
|
|
43
42
|
|
|
@@ -95,42 +94,14 @@ var subSort = (value) => {
|
|
|
95
94
|
return (0, import_object.isObject)(value) ? sortFields(value) : value;
|
|
96
95
|
};
|
|
97
96
|
var sortFields = (obj) => {
|
|
98
|
-
const stringyObj = obj;
|
|
99
97
|
const result = {};
|
|
100
|
-
Object.keys(obj)
|
|
101
|
-
|
|
98
|
+
const keys = Object.keys(obj);
|
|
99
|
+
keys.sort().forEach((key) => {
|
|
100
|
+
result[key] = subSort(obj[key]);
|
|
102
101
|
});
|
|
103
102
|
return result;
|
|
104
103
|
};
|
|
105
104
|
|
|
106
|
-
// src/toUint8Array.ts
|
|
107
|
-
var import_base = require("@scure/base");
|
|
108
|
-
var import_assert = require("@xylabs/assert");
|
|
109
|
-
var import_typeof2 = require("@xyo-network/typeof");
|
|
110
|
-
var stringToUint8Array = (value, base = 16) => {
|
|
111
|
-
switch (base) {
|
|
112
|
-
case 16:
|
|
113
|
-
return import_base.base16.decode((value.startsWith("0x") ? value.slice(2) : value).toUpperCase());
|
|
114
|
-
case 58:
|
|
115
|
-
return import_base.base58.decode(value);
|
|
116
|
-
default:
|
|
117
|
-
throw Error(`Unsupported base [${base}]`);
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
function toUint8Array(value, padLength, base) {
|
|
121
|
-
if (value === void 0)
|
|
122
|
-
return void 0;
|
|
123
|
-
let result = (0, import_typeof2.ifTypeOf)("string", value, (value2) => stringToUint8Array(value2, base)) ?? value;
|
|
124
|
-
if (result === void 0) {
|
|
125
|
-
throw Error(`toUint8Array - Unknown type: ${typeof value}`);
|
|
126
|
-
}
|
|
127
|
-
if (padLength && result.length < padLength) {
|
|
128
|
-
result = new Uint8Array([...new Uint8Array(padLength - result.length), ...result]);
|
|
129
|
-
(0, import_assert.assertEx)((result == null ? void 0 : result.length) <= padLength, "Resulting length is greater than padLength");
|
|
130
|
-
}
|
|
131
|
-
return result;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
105
|
// src/PayloadHasher.ts
|
|
135
106
|
var wasmSupportStatic = new import_wasm.WasmSupport(["bigInt"]);
|
|
136
107
|
var PayloadHasher = class _PayloadHasher extends import_object2.ObjectWrapper {
|
|
@@ -151,16 +122,18 @@ var PayloadHasher = class _PayloadHasher extends import_object2.ObjectWrapper {
|
|
|
151
122
|
var _a;
|
|
152
123
|
return (_a = (await this.hashPairs(objs)).find(([_, objHash]) => objHash === hash)) == null ? void 0 : _a[0];
|
|
153
124
|
}
|
|
154
|
-
static async hashAsync(obj
|
|
125
|
+
static async hashAsync(obj) {
|
|
155
126
|
if (_PayloadHasher.allowSubtle) {
|
|
156
127
|
try {
|
|
157
128
|
const enc = new TextEncoder();
|
|
158
129
|
const stringToHash = this.stringifyHashFields(obj);
|
|
159
130
|
const b = enc.encode(stringToHash);
|
|
160
131
|
const hashArray = await import_platform.subtle.digest("SHA-256", b);
|
|
161
|
-
return
|
|
132
|
+
return (0, import_hex.hexFromArrayBuffer)(hashArray, { bitLength: 256 });
|
|
162
133
|
} catch (ex) {
|
|
163
|
-
|
|
134
|
+
const error = ex;
|
|
135
|
+
console.error(`Setting allowSubtle to false [${error.message}]`);
|
|
136
|
+
console.log(error.stack);
|
|
164
137
|
_PayloadHasher.allowSubtle = false;
|
|
165
138
|
}
|
|
166
139
|
}
|
|
@@ -168,8 +141,7 @@ var PayloadHasher = class _PayloadHasher extends import_object2.ObjectWrapper {
|
|
|
168
141
|
if (this.wasmSupport.canUseWasm) {
|
|
169
142
|
const stringToHash = this.stringifyHashFields(obj);
|
|
170
143
|
try {
|
|
171
|
-
|
|
172
|
-
return encoding === "buffer" ? toUint8Array(hash) : hash;
|
|
144
|
+
return (0, import_hex.asHash)(await (0, import_hash_wasm.sha256)(stringToHash), true);
|
|
173
145
|
} catch (ex) {
|
|
174
146
|
this.wasmSupport.allowWasm = false;
|
|
175
147
|
}
|
|
@@ -180,19 +152,13 @@ var PayloadHasher = class _PayloadHasher extends import_object2.ObjectWrapper {
|
|
|
180
152
|
return sortFields(removeEmptyFields(deepOmitUnderscoreFields(obj)));
|
|
181
153
|
}
|
|
182
154
|
static async hashPairs(objs) {
|
|
183
|
-
return await Promise.all(objs.map(async (obj) => [obj, await _PayloadHasher.hashAsync(obj
|
|
184
|
-
}
|
|
185
|
-
static hashSync(obj
|
|
186
|
-
|
|
187
|
-
switch (encoding) {
|
|
188
|
-
case "buffer":
|
|
189
|
-
return buffer.buffer;
|
|
190
|
-
default:
|
|
191
|
-
return (0, import_hex.asHash)(buffer.toString("hex"), 256, true);
|
|
192
|
-
}
|
|
155
|
+
return await Promise.all(objs.map(async (obj) => [obj, await _PayloadHasher.hashAsync(obj)]));
|
|
156
|
+
}
|
|
157
|
+
static hashSync(obj) {
|
|
158
|
+
return (0, import_hex.asHash)((0, import_sha.default)("sha256").update(this.stringifyHashFields(obj)).digest().toString("hex"), true);
|
|
193
159
|
}
|
|
194
160
|
static async hashes(objs) {
|
|
195
|
-
return await Promise.all(objs.map((obj) => this.hashAsync(obj
|
|
161
|
+
return await Promise.all(objs.map((obj) => this.hashAsync(obj)));
|
|
196
162
|
}
|
|
197
163
|
/** @function jsonPayload Returns a clone of the payload that is JSON safe */
|
|
198
164
|
static jsonPayload(payload, meta = false) {
|
|
@@ -203,28 +169,14 @@ var PayloadHasher = class _PayloadHasher extends import_object2.ObjectWrapper {
|
|
|
203
169
|
}
|
|
204
170
|
static async toMap(objs) {
|
|
205
171
|
const result = {};
|
|
206
|
-
await Promise.all(objs.map(async (obj) => result[await _PayloadHasher.hashAsync(obj
|
|
172
|
+
await Promise.all(objs.map(async (obj) => result[await _PayloadHasher.hashAsync(obj)] = obj));
|
|
207
173
|
return result;
|
|
208
174
|
}
|
|
209
|
-
async hashAsync(
|
|
210
|
-
|
|
211
|
-
case "buffer":
|
|
212
|
-
return await _PayloadHasher.hashAsync(this.obj, encoding);
|
|
213
|
-
case "hex":
|
|
214
|
-
return await _PayloadHasher.hashAsync(this.obj, encoding);
|
|
215
|
-
default:
|
|
216
|
-
return await _PayloadHasher.hashAsync(this.obj, encoding);
|
|
217
|
-
}
|
|
175
|
+
async hashAsync() {
|
|
176
|
+
return await _PayloadHasher.hashAsync(this.obj);
|
|
218
177
|
}
|
|
219
|
-
hashSync(
|
|
220
|
-
|
|
221
|
-
case "hex":
|
|
222
|
-
return _PayloadHasher.hashSync(this.obj, encoding);
|
|
223
|
-
case "buffer":
|
|
224
|
-
return _PayloadHasher.hashSync(this.obj, encoding);
|
|
225
|
-
default:
|
|
226
|
-
return _PayloadHasher.hashSync(this.obj, encoding);
|
|
227
|
-
}
|
|
178
|
+
hashSync() {
|
|
179
|
+
return _PayloadHasher.hashSync(this.obj);
|
|
228
180
|
}
|
|
229
181
|
/** @function jsonPayload Returns a clone of the payload that is JSON safe */
|
|
230
182
|
jsonPayload(meta = false) {
|
|
@@ -239,7 +191,6 @@ var PayloadHasher = class _PayloadHasher extends import_object2.ObjectWrapper {
|
|
|
239
191
|
deepPickUnderscoreFields,
|
|
240
192
|
isHex,
|
|
241
193
|
removeEmptyFields,
|
|
242
|
-
sortFields
|
|
243
|
-
toUint8Array
|
|
194
|
+
sortFields
|
|
244
195
|
});
|
|
245
196
|
//# sourceMappingURL=index.cjs.map
|