@xyo-network/hash 7.0.0 → 7.0.3
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/ObjectHasher.d.ts +1 -1
- package/dist/browser/ObjectHasher.d.ts.map +1 -1
- package/dist/browser/index-browser.mjs +23 -25
- package/dist/browser/index-browser.mjs.map +2 -2
- package/dist/browser/sortFields.d.ts.map +1 -1
- package/dist/browser/worker/subtleHash-bundle.mjs +43 -43
- package/dist/browser/worker/subtleHash.mjs +1 -5
- package/dist/browser/worker/subtleHash.mjs.map +2 -2
- package/dist/browser/worker/subtleHashNode.d.ts.map +1 -1
- package/dist/browser/worker/wasmHash-bundle.mjs +50 -50
- package/dist/browser/worker/wasmHash.mjs +1 -5
- package/dist/browser/worker/wasmHash.mjs.map +2 -2
- package/dist/browser/worker/wasmHashNode.d.ts.map +1 -1
- package/dist/neutral/ObjectHasher.d.ts +1 -1
- package/dist/neutral/ObjectHasher.d.ts.map +1 -1
- package/dist/neutral/index-browser.mjs +23 -25
- package/dist/neutral/index-browser.mjs.map +2 -2
- package/dist/neutral/sortFields.d.ts.map +1 -1
- package/dist/neutral/worker/subtleHash.mjs +1 -5
- package/dist/neutral/worker/subtleHash.mjs.map +2 -2
- package/dist/neutral/worker/subtleHashNode.d.ts.map +1 -1
- package/dist/neutral/worker/wasmHash.mjs +1 -5
- package/dist/neutral/worker/wasmHash.mjs.map +2 -2
- package/dist/neutral/worker/wasmHashNode.d.ts.map +1 -1
- package/dist/node/ObjectHasher.d.ts +1 -1
- package/dist/node/ObjectHasher.d.ts.map +1 -1
- package/dist/node/index.mjs +23 -25
- package/dist/node/index.mjs.map +2 -2
- package/dist/node/sortFields.d.ts.map +1 -1
- package/dist/node/worker/subtleHashNode.d.ts.map +1 -1
- package/dist/node/worker/subtleHashNode.mjs +1 -5
- package/dist/node/worker/subtleHashNode.mjs.map +2 -2
- package/dist/node/worker/wasmHashNode.d.ts.map +1 -1
- package/dist/node/worker/wasmHashNode.mjs +1 -5
- package/dist/node/worker/wasmHashNode.mjs.map +2 -2
- package/package.json +17 -15
- package/dist/browser/index.mjs +0 -281
- package/dist/browser/index.mjs.map +0 -7
- package/dist/neutral/index.mjs +0 -281
- package/dist/neutral/index.mjs.map +0 -7
|
@@ -49,7 +49,7 @@ export declare class ObjectHasher<T extends EmptyObject = EmptyObject> extends O
|
|
|
49
49
|
* @returns Returns a clone of the payload that is JSON safe
|
|
50
50
|
*/
|
|
51
51
|
static json<T extends EmptyObject>(payload: T, meta?: boolean): T;
|
|
52
|
-
/** @deprecated us
|
|
52
|
+
/** @deprecated us JSON instead */
|
|
53
53
|
static jsonPayload<T extends EmptyObject>(payload: T, meta?: boolean): T;
|
|
54
54
|
static stringifyHashFields<T extends EmptyObject>(obj: T): string;
|
|
55
55
|
static subtleHash(data: Uint8Array<ArrayBuffer>): Promise<ArrayBuffer>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectHasher.d.ts","sourceRoot":"","sources":["../../src/ObjectHasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAEe,aAAa,EAClC,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAgB,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAO/C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAA;AAChF,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;AAS5E,qBAAa,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,gBAAgB,UAAO;IAC9B,MAAM,CAAC,WAAW,UAAO;IACzB,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,MAAM,GAAG,SAAS,CAAA;IAC9D,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,KAAK,MAAM,GAAG,SAAS,CAAA;IAEtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAA;IAEzC,MAAM,CAAC,iBAAiB,UAAO;IAE/B,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAA;IAEvC,MAAM,CAAC,QAAQ,CAAC,eAAe,gBAAiC;IAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAoB;IAG/C,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAA8C;IAE7E,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAA8C;IAE3E,OAAO,CAAC,MAAM,KAAK,cAAc,GAYhC;IAED,OAAO,CAAC,MAAM,KAAK,YAAY,GAY9B;IAED,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,OAAO,GAAG,MAAM;WAK/C,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,YAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ObjectHasher.d.ts","sourceRoot":"","sources":["../../src/ObjectHasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAEe,aAAa,EAClC,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAgB,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAO/C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAA;AAChF,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;AAS5E,qBAAa,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,gBAAgB,UAAO;IAC9B,MAAM,CAAC,WAAW,UAAO;IACzB,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,MAAM,GAAG,SAAS,CAAA;IAC9D,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,KAAK,MAAM,GAAG,SAAS,CAAA;IAEtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAA;IAEzC,MAAM,CAAC,iBAAiB,UAAO;IAE/B,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAA;IAEvC,MAAM,CAAC,QAAQ,CAAC,eAAe,gBAAiC;IAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,cAAoB;IAG/C,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAA8C;IAE7E,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAA8C;IAE3E,OAAO,CAAC,MAAM,KAAK,cAAc,GAYhC;IAED,OAAO,CAAC,MAAM,KAAK,YAAY,GAY9B;IAED,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,OAAO,GAAG,MAAM;WAK/C,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,YAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAM7F,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,YAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAM7F,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,YAAK,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKlG;;;;OAIG;WACU,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;WA6BlD,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAetE,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAMnD;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IAI9E;;;;OAIG;WACU,MAAM,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;IAInF;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,UAAQ,GAAG,CAAC;IAM/D,kCAAkC;IAClC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,UAAQ,GAAG,CAAC;IAItE,MAAM,CAAC,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC;WAI3C,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;WAO/D,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAMzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;;;OAIG;IACH,IAAI,CAAC,IAAI,UAAQ,GAAG,CAAC;CAGtB;AAED,6DAA6D;AAC7D,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;CAAG"}
|
|
@@ -78,11 +78,7 @@ var sortFields = (obj) => {
|
|
|
78
78
|
var subtleHashFunc = () => {
|
|
79
79
|
const { subtle } = __require("@xylabs/platform");
|
|
80
80
|
const { expose } = __require("@xylabs/threads/worker");
|
|
81
|
-
expose({
|
|
82
|
-
async hash(data) {
|
|
83
|
-
return await subtle.digest("SHA-256", data);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
81
|
+
expose({ hash: async (data) => await subtle.digest("SHA-256", data) });
|
|
86
82
|
};
|
|
87
83
|
|
|
88
84
|
// src/worker/wasmHashNode.ts
|
|
@@ -90,11 +86,7 @@ var wasmHashFunc = () => {
|
|
|
90
86
|
const { sha256: sha2562 } = __require("hash-wasm");
|
|
91
87
|
const { asHash: asHash2 } = __require("@xylabs/hex");
|
|
92
88
|
const { expose } = __require("@xylabs/threads/worker");
|
|
93
|
-
expose({
|
|
94
|
-
async hash(data) {
|
|
95
|
-
return asHash2(await sha2562(data), true);
|
|
96
|
-
}
|
|
97
|
-
});
|
|
89
|
+
expose({ hash: async (data) => asHash2(await sha2562(data), true) });
|
|
98
90
|
};
|
|
99
91
|
|
|
100
92
|
// src/ObjectHasher.ts
|
|
@@ -147,14 +139,17 @@ var ObjectHasher = class _ObjectHasher extends ObjectWrapper {
|
|
|
147
139
|
}
|
|
148
140
|
static async filterExcludeByHash(objs = [], hash) {
|
|
149
141
|
const hashes = Array.isArray(hash) ? hash : [hash];
|
|
150
|
-
|
|
142
|
+
const pairs = await this.hashPairs(objs);
|
|
143
|
+
return pairs.filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0]);
|
|
151
144
|
}
|
|
152
145
|
static async filterIncludeByHash(objs = [], hash) {
|
|
153
146
|
const hashes = Array.isArray(hash) ? hash : [hash];
|
|
154
|
-
|
|
147
|
+
const pairs = await this.hashPairs(objs);
|
|
148
|
+
return pairs.filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0]);
|
|
155
149
|
}
|
|
156
150
|
static async findByHash(objs = [], hash) {
|
|
157
|
-
|
|
151
|
+
const pairs = await this.hashPairs(objs);
|
|
152
|
+
return pairs.find(([_, objHash]) => objHash === hash)?.[0];
|
|
158
153
|
}
|
|
159
154
|
/**
|
|
160
155
|
* Asynchronously hashes a payload
|
|
@@ -174,11 +169,11 @@ var ObjectHasher = class _ObjectHasher extends ObjectWrapper {
|
|
|
174
169
|
}
|
|
175
170
|
}
|
|
176
171
|
await this.wasmInitialized;
|
|
177
|
-
if (
|
|
172
|
+
if (_ObjectHasher.wasmSupport.canUseWasm) {
|
|
178
173
|
try {
|
|
179
174
|
return await this.wasmHash(data);
|
|
180
175
|
} catch {
|
|
181
|
-
|
|
176
|
+
_ObjectHasher.wasmSupport.allowWasm = false;
|
|
182
177
|
}
|
|
183
178
|
}
|
|
184
179
|
throw new Error("No subtle or wasm hashing available");
|
|
@@ -188,16 +183,17 @@ var ObjectHasher = class _ObjectHasher extends ObjectWrapper {
|
|
|
188
183
|
if (_ObjectHasher.allowSubtle) {
|
|
189
184
|
const hashArray = await this.subtleHash(bytesArray);
|
|
190
185
|
return hexFromArrayBuffer(hashArray, { bitLength: 256 });
|
|
191
|
-
} else {
|
|
192
|
-
await this.wasmInitialized;
|
|
193
|
-
if (this.wasmSupport.canUseWasm) {
|
|
194
|
-
return await this.wasmHash(bytesArray);
|
|
195
|
-
}
|
|
196
|
-
throw new Error("No subtle or wasm hashing available");
|
|
197
186
|
}
|
|
187
|
+
await this.wasmInitialized;
|
|
188
|
+
if (_ObjectHasher.wasmSupport.canUseWasm) {
|
|
189
|
+
return await this.wasmHash(bytesArray);
|
|
190
|
+
}
|
|
191
|
+
throw new Error("No subtle or wasm hashing available");
|
|
198
192
|
}
|
|
199
193
|
static hashFields(obj) {
|
|
200
|
-
|
|
194
|
+
const filtered = omitBy(obj, omitByPredicate("_"));
|
|
195
|
+
const cleaned = removeEmptyFields(filtered);
|
|
196
|
+
return sortFields(cleaned);
|
|
201
197
|
}
|
|
202
198
|
/**
|
|
203
199
|
* Creates an array of payload/hash tuples based on the payloads passed in
|
|
@@ -205,7 +201,7 @@ var ObjectHasher = class _ObjectHasher extends ObjectWrapper {
|
|
|
205
201
|
* @returns An array of payload/hash tuples
|
|
206
202
|
*/
|
|
207
203
|
static async hashPairs(objs) {
|
|
208
|
-
return await Promise.all(objs.map(async (obj) => [obj, await
|
|
204
|
+
return await Promise.all(objs.map(async (obj) => [obj, await this.hash(obj)]));
|
|
209
205
|
}
|
|
210
206
|
/**
|
|
211
207
|
* Creates an array of payload hashes based on the payloads passed in
|
|
@@ -222,9 +218,11 @@ var ObjectHasher = class _ObjectHasher extends ObjectWrapper {
|
|
|
222
218
|
* @returns Returns a clone of the payload that is JSON safe
|
|
223
219
|
*/
|
|
224
220
|
static json(payload, meta = false) {
|
|
225
|
-
|
|
221
|
+
const source = meta ? payload : omitBy(payload, omitByPredicate("_"));
|
|
222
|
+
const cleaned = removeEmptyFields(source);
|
|
223
|
+
return sortFields(cleaned);
|
|
226
224
|
}
|
|
227
|
-
/** @deprecated us
|
|
225
|
+
/** @deprecated us JSON instead */
|
|
228
226
|
static jsonPayload(payload, meta = false) {
|
|
229
227
|
return this.json(payload, meta);
|
|
230
228
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createBrowserWorker.ts", "../../src/createNodeWorker.ts", "../../src/ObjectHasher.ts", "../../src/removeEmptyFields.ts", "../../src/sortFields.ts", "../../src/worker/subtleHashNode.ts", "../../src/worker/wasmHashNode.ts", "../../src/BrowserObjectHasher.ts"],
|
|
4
|
-
"sourcesContent": ["import { Worker } from '@xylabs/threads/master'\n\nexport const createBrowserWorker = (url?: URL): Worker => {\n try {\n return new Worker(url as unknown as string)\n } catch {\n throw new Error('Unable to create worker')\n }\n}\n", "import { Worker } from '@xylabs/threads/master'\n\ntype WorkerOptions = ConstructorParameters<typeof Worker>[1]\n\nexport const createNodeWorker = (func?: () => unknown): Worker => {\n try {\n const code = func?.toString().slice(6) ?? ''\n return new Worker(\n code,\n { fromSource: true } as unknown as WorkerOptions,\n )\n } catch {\n throw new Error('Unable to create worker')\n }\n}\n", "import type { EmptyObject, Hash } from '@xylabs/sdk-js'\nimport {\n asHash, assertEx,\n hexFromArrayBuffer, ObjectWrapper, omitBy,\n} from '@xylabs/sdk-js'\nimport type { ModuleThread, Worker } from '@xylabs/threads/master'\nimport { Pool, spawn } from '@xylabs/threads/master'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { sha256 } from 'hash-wasm'\n\nimport { removeEmptyFields } from './removeEmptyFields.ts'\nimport { sortFields } from './sortFields.ts'\nimport { subtleHashFunc, wasmHashFunc } from './worker/index.ts'\n\nexport type WorkerFunction = ((...args: unknown[]) => unknown) | (() => unknown)\nexport type WorkerModule<Keys extends string> = Record<Keys, WorkerFunction>\n\nconst wasmSupportStatic = new WasmSupport(['bigInt'])\n\nconst omitByPredicate = (prefix: string) => (_: unknown, key: string) => {\n assertEx(typeof key === 'string', () => `Invalid key type [${String(key)}, ${typeof key}]`)\n return String(key).startsWith(prefix)\n}\n\nexport class ObjectHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {\n static allowHashPooling = true\n static allowSubtle = true\n static createBrowserWorker?: (url?: URL) => Worker | undefined\n static createNodeWorker?: (func?: () => unknown) => Worker | undefined\n\n static readonly subtleHashWorkerUrl?: URL\n\n static warnIfUsingJsHash = true\n\n static readonly wasmHashWorkerUrl?: URL\n\n static readonly wasmInitialized = wasmSupportStatic.initialize()\n static readonly wasmSupport = wasmSupportStatic\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private static _subtleHashPool?: Pool<ModuleThread<WorkerModule<any>>> | null\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private static _wasmHashPool?: Pool<ModuleThread<WorkerModule<any>>> | null\n\n private static get subtleHashPool() {\n if (!this.allowHashPooling || this._subtleHashPool === null) {\n return null\n }\n try {\n return (this._subtleHashPool\n = this._subtleHashPool ?? (this.subtleHashWorkerUrl ? this.createWorkerPool(this.subtleHashWorkerUrl, subtleHashFunc) : null))\n } catch {\n console.warn('Creating subtle hash worker failed')\n this._subtleHashPool = null\n return null\n }\n }\n\n private static get wasmHashPool() {\n if (!this.allowHashPooling || this._wasmHashPool === null) {\n return null\n }\n try {\n return (this._wasmHashPool\n = this._wasmHashPool ?? (this.wasmHashWorkerUrl ? this.createWorkerPool(this.wasmHashWorkerUrl, wasmHashFunc) : null))\n } catch {\n console.warn('Creating wasm hash worker failed')\n this._wasmHashPool = null\n return null\n }\n }\n\n static createWorker(url?: URL, func?: () => unknown): Worker {\n if (url) console.debug(`createWorker: ${url.href}`)\n return assertEx(this.createBrowserWorker?.(url) ?? this.createNodeWorker?.(func), () => 'Unable to create worker')\n }\n\n static async filterExcludeByHash<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 filterIncludeByHash<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 findByHash<T extends EmptyObject>(objs: T[] = [], hash: Hash): Promise<T | undefined> {\n return (await this.hashPairs(objs)).find(([_, objHash]) => objHash === hash)?.[0]\n }\n\n /**\n * Asynchronously hashes a payload\n * @param obj A payload\n * @returns The payload hash\n */\n static async hash<T extends EmptyObject>(obj: T): Promise<Hash> {\n const stringToHash = this.stringifyHashFields(obj)\n const enc = new TextEncoder()\n const data = enc.encode(stringToHash)\n\n if (ObjectHasher.allowSubtle) {\n try {\n const hashArray = await this.subtleHash(data)\n return hexFromArrayBuffer(hashArray, { bitLength: 256 }) as Hash\n } catch {\n ObjectHasher.allowSubtle = false\n }\n }\n\n await this.wasmInitialized\n if (this.wasmSupport.canUseWasm) {\n try {\n return await this.wasmHash(data)\n } catch {\n this.wasmSupport.allowWasm = false\n }\n }\n throw new Error('No subtle or wasm hashing available')\n }\n\n static async hashBytes(bytes: ArrayBuffer | Uint8Array): Promise<Hash> {\n const bytesArray = new Uint8Array(bytes)\n if (ObjectHasher.allowSubtle) {\n const hashArray = await this.subtleHash(bytesArray)\n return hexFromArrayBuffer(hashArray, { bitLength: 256 }) as Hash\n } else {\n await this.wasmInitialized\n if (this.wasmSupport.canUseWasm) {\n return await this.wasmHash(bytesArray)\n }\n throw new Error('No subtle or wasm hashing available')\n }\n }\n\n static hashFields<T extends EmptyObject>(obj: T): T {\n return sortFields(removeEmptyFields(omitBy(obj, omitByPredicate('_')))) as T\n }\n\n /**\n * Creates an array of payload/hash tuples based on the payloads passed in\n * @param objs Any array of payloads\n * @returns An array of payload/hash tuples\n */\n static async hashPairs<T extends EmptyObject>(objs: T[]): Promise<[T, Hash][]> {\n return await Promise.all(objs.map<Promise<[T, Hash]>>(async obj => [obj, await ObjectHasher.hash(obj)]))\n }\n\n /**\n * Creates an array of payload hashes based on the payloads passed in\n * @param objs Any array of payloads\n * @returns An array of payload hashes\n */\n static async hashes<T extends EmptyObject>(objs?: T[]): Promise<Hash[] | undefined> {\n return objs ? await Promise.all(objs.map(obj => this.hash(obj))) : undefined\n }\n\n /**\n * Returns a clone of the payload that is JSON safe\n * @param obj A payload\n * @param meta Keeps underscore (meta) fields if set to true\n * @returns Returns a clone of the payload that is JSON safe\n */\n static json<T extends EmptyObject>(payload: T, meta = false): T {\n return sortFields(removeEmptyFields(meta ? payload : omitBy(payload, omitByPredicate('_')))) as T\n }\n\n /** @deprecated us json instead */\n static jsonPayload<T extends EmptyObject>(payload: T, meta = false): T {\n return this.json(payload, meta)\n }\n\n static stringifyHashFields<T extends EmptyObject>(obj: T) {\n return JSON.stringify(this.hashFields(obj))\n }\n\n static async subtleHash(data: Uint8Array<ArrayBuffer>): Promise<ArrayBuffer> {\n const pool = this.subtleHashPool\n if (pool === null) return await globalThis.crypto.subtle.digest('SHA-256', data)\n const result: unknown = await pool.queue(async thread => await thread.hash(data))\n return result as ArrayBuffer\n }\n\n static async wasmHash(data: Uint8Array): Promise<Hash> {\n const pool = this.wasmHashPool\n if (pool === null) return asHash(await sha256(data), true)\n const result: unknown = await pool.queue(async thread => await thread.hash(data))\n return result as Hash\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private static createWorkerPool<T extends WorkerModule<any>>(url?: URL, func?: () => unknown, size = 8) {\n if (url) console.debug(`createWorkerPool: ${url.href}`)\n const createFunc = () => spawn<T>(this.createWorker(url, func))\n return Pool(createFunc, size)\n }\n\n async hash(): Promise<Hash> {\n return await ObjectHasher.hash(this.obj)\n }\n\n /**\n * Returns a clone of the payload that is JSON safe\n * @param meta Keeps underscore (meta) fields if set to true\n * @returns Returns a clone of the payload that is JSON safe\n */\n json(meta = false): T {\n return ObjectHasher.json(this.obj, meta)\n }\n}\n\n/** @deprecated use PayloadBuilder or ObjectHasher instead */\nexport class PayloadHasher<T extends object> extends ObjectHasher<T> {}\n", "import type { AnyObject, EmptyObject } from '@xylabs/sdk-js'\nimport { typeOf } from '@xylabs/sdk-js'\n\nexport const removeEmptyFields = <T extends EmptyObject>(obj: T): T => {\n if (obj == null) return obj\n\n if (Array.isArray(obj)) {\n const arr = obj as unknown[]\n return arr.map(value => (typeof value === 'object' ? removeEmptyFields(value as Record<string, unknown>) : value)) as T\n }\n\n const newObject: AnyObject = {}\n for (const [key, value] of Object.entries(obj)) {\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 type { AnyObject, EmptyObject } from '@xylabs/sdk-js'\nimport { isObject } from '@xylabs/sdk-js'\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 for (const key of keys.toSorted()) {\n result[key] = subSort(obj[key])\n }\n return result as T\n}\n", "declare const require: <T = unknown>(id: string) => T\n\nexport const subtleHashFunc = () => {\n const { subtle } = require<{ subtle: { digest: (algorithm: string, data: ArrayBuffer) => Promise<ArrayBuffer> } }>('@xylabs/platform')\n const { expose } = require<{ expose: (api: unknown) => void }>('@xylabs/threads/worker')\n\n expose({\n async hash(data: ArrayBuffer) {\n return await subtle.digest('SHA-256', data)\n },\n })\n}\n", "declare const require: <T = unknown>(id: string) => T\n\nexport const wasmHashFunc = () => {\n const { sha256 } = require<{ sha256: (data: string) => Promise<string> }>('hash-wasm')\n const { asHash } = require<{ asHash: (value: string, branded: true) => string }>('@xylabs/hex')\n\n const { expose } = require<{ expose: (api: unknown) => void }>('@xylabs/threads/worker')\n\n expose({\n async hash(data: string) {\n return asHash(await sha256(data), true)\n },\n })\n}\n", "import type { EmptyObject } from '@xylabs/sdk-js'\n\nimport { createBrowserWorker } from './createBrowserWorker.ts'\nimport { createNodeWorker } from './createNodeWorker.ts'\nimport { ObjectHasher } from './ObjectHasher.ts'\n\nObjectHasher.createBrowserWorker = createBrowserWorker\nObjectHasher.createNodeWorker = createNodeWorker\n\nexport class BrowserObjectHasher<T extends EmptyObject = EmptyObject> extends ObjectHasher<T> {\n static override readonly createBrowserWorker = createBrowserWorker\n static override readonly createNodeWorker = createNodeWorker\n static override readonly subtleHashWorkerUrl = (() => {\n try {\n return new URL('worker/subtleHash-bundle.mjs', import.meta.url)\n } catch {\n return\n }\n })()\n\n static override readonly wasmHashWorkerUrl = (() => {\n try {\n return new URL('worker/wasmHash-bundle.mjs', import.meta.url)\n } catch {\n return\n }\n })()\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AAAA,SAAS,cAAc;AAEhB,IAAM,sBAAsB,CAAC,QAAsB;AACxD,MAAI;AACF,WAAO,IAAI,OAAO,GAAwB;AAAA,EAC5C,QAAQ;AACN,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AACF;;;ACRA,SAAS,UAAAA,eAAc;AAIhB,IAAM,mBAAmB,CAAC,SAAiC;AAChE,MAAI;AACF,UAAM,OAAO,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK;AAC1C,WAAO,IAAIA;AAAA,MACT;AAAA,MACA,EAAE,YAAY,KAAK;AAAA,IACrB;AAAA,EACF,QAAQ;AACN,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AACF;;;ACbA;AAAA,EACE;AAAA,EAAQ;AAAA,EACR;AAAA,EAAoB;AAAA,EAAe;AAAA,OAC9B;AAEP,SAAS,MAAM,aAAa;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,cAAc;;;ACPvB,SAAS,cAAc;AAEhB,IAAM,oBAAoB,CAAwB,QAAc;AACrE,MAAI,OAAO,KAAM,QAAO;AAExB,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,UAAM,MAAM;AACZ,WAAO,IAAI,IAAI,WAAU,OAAO,UAAU,WAAW,kBAAkB,KAAgC,IAAI,KAAM;AAAA,EACnH;AAEA,QAAM,YAAuB,CAAC;AAC9B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,QAAI,OAAO,KAAK,MAAM,UAAU;AAC9B,gBAAU,GAAG,IAAI,kBAAkB,KAAgC;AAAA,IACrE,WAAW,UAAU,QAAW;AAC9B,gBAAU,GAAG,IAAI;AAAA,IACnB;AAAA,EACF;AACA,SAAO;AACT;;;ACnBA,SAAS,gBAAgB;AAGzB,IAAM,UAAU,CAAC,UAAmB;AAClC,SAAO,SAAS,KAAK,IAAI,WAAW,KAAK,IAAI;AAC/C;AAEO,IAAM,aAAa,CAAwB,QAAW;AAC3D,QAAM,SAAoB,CAAC;AAC3B,QAAM,OAAO,OAAO,KAAK,GAAG;
|
|
4
|
+
"sourcesContent": ["import { Worker } from '@xylabs/threads/master'\n\nexport const createBrowserWorker = (url?: URL): Worker => {\n try {\n return new Worker(url as unknown as string)\n } catch {\n throw new Error('Unable to create worker')\n }\n}\n", "import { Worker } from '@xylabs/threads/master'\n\ntype WorkerOptions = ConstructorParameters<typeof Worker>[1]\n\nexport const createNodeWorker = (func?: () => unknown): Worker => {\n try {\n const code = func?.toString().slice(6) ?? ''\n return new Worker(\n code,\n { fromSource: true } as unknown as WorkerOptions,\n )\n } catch {\n throw new Error('Unable to create worker')\n }\n}\n", "import type { EmptyObject, Hash } from '@xylabs/sdk-js'\nimport {\n asHash, assertEx,\n hexFromArrayBuffer, ObjectWrapper, omitBy,\n} from '@xylabs/sdk-js'\nimport type { ModuleThread, Worker } from '@xylabs/threads/master'\nimport { Pool, spawn } from '@xylabs/threads/master'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { sha256 } from 'hash-wasm'\n\nimport { removeEmptyFields } from './removeEmptyFields.ts'\nimport { sortFields } from './sortFields.ts'\nimport { subtleHashFunc, wasmHashFunc } from './worker/index.ts'\n\nexport type WorkerFunction = ((...args: unknown[]) => unknown) | (() => unknown)\nexport type WorkerModule<Keys extends string> = Record<Keys, WorkerFunction>\n\nconst wasmSupportStatic = new WasmSupport(['bigInt'])\n\nconst omitByPredicate = (prefix: string) => (_: unknown, key: string) => {\n assertEx(typeof key === 'string', () => `Invalid key type [${String(key)}, ${typeof key}]`)\n return String(key).startsWith(prefix)\n}\n\nexport class ObjectHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {\n static allowHashPooling = true\n static allowSubtle = true\n static createBrowserWorker?: (url?: URL) => Worker | undefined\n static createNodeWorker?: (func?: () => unknown) => Worker | undefined\n\n static readonly subtleHashWorkerUrl?: URL\n\n static warnIfUsingJsHash = true\n\n static readonly wasmHashWorkerUrl?: URL\n\n static readonly wasmInitialized = wasmSupportStatic.initialize()\n static readonly wasmSupport = wasmSupportStatic\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private static _subtleHashPool?: Pool<ModuleThread<WorkerModule<any>>> | null\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private static _wasmHashPool?: Pool<ModuleThread<WorkerModule<any>>> | null\n\n private static get subtleHashPool() {\n if (!this.allowHashPooling || this._subtleHashPool === null) {\n return null\n }\n try {\n return (this._subtleHashPool\n = this._subtleHashPool ?? (this.subtleHashWorkerUrl ? this.createWorkerPool(this.subtleHashWorkerUrl, subtleHashFunc) : null))\n } catch {\n console.warn('Creating subtle hash worker failed')\n this._subtleHashPool = null\n return null\n }\n }\n\n private static get wasmHashPool() {\n if (!this.allowHashPooling || this._wasmHashPool === null) {\n return null\n }\n try {\n return (this._wasmHashPool\n = this._wasmHashPool ?? (this.wasmHashWorkerUrl ? this.createWorkerPool(this.wasmHashWorkerUrl, wasmHashFunc) : null))\n } catch {\n console.warn('Creating wasm hash worker failed')\n this._wasmHashPool = null\n return null\n }\n }\n\n static createWorker(url?: URL, func?: () => unknown): Worker {\n if (url) console.debug(`createWorker: ${url.href}`)\n return assertEx(this.createBrowserWorker?.(url) ?? this.createNodeWorker?.(func), () => 'Unable to create worker')\n }\n\n static async filterExcludeByHash<T extends EmptyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n const pairs = await this.hashPairs(objs)\n return pairs.filter(([_, objHash]) => !hashes.includes(objHash))?.map(pair => pair[0])\n }\n\n static async filterIncludeByHash<T extends EmptyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n const pairs = await this.hashPairs(objs)\n return pairs.filter(([_, objHash]) => hashes.includes(objHash))?.map(pair => pair[0])\n }\n\n static async findByHash<T extends EmptyObject>(objs: T[] = [], hash: Hash): Promise<T | undefined> {\n const pairs = await this.hashPairs(objs)\n return pairs.find(([_, objHash]) => objHash === hash)?.[0]\n }\n\n /**\n * Asynchronously hashes a payload\n * @param obj A payload\n * @returns The payload hash\n */\n static async hash<T extends EmptyObject>(obj: T): Promise<Hash> {\n const stringToHash = this.stringifyHashFields(obj)\n const enc = new TextEncoder()\n const data = enc.encode(stringToHash)\n\n // Base-class static flags are intentionally referenced by name so subclass\n // test overrides on NodeObjectHasher/BrowserObjectHasher do not shadow them.\n /* eslint-disable unicorn/class-reference-in-static-methods -- shared static config on base class */\n if (ObjectHasher.allowSubtle) {\n try {\n const hashArray = await this.subtleHash(data)\n return hexFromArrayBuffer(hashArray, { bitLength: 256 }) as Hash\n } catch {\n ObjectHasher.allowSubtle = false\n }\n }\n\n await this.wasmInitialized\n if (ObjectHasher.wasmSupport.canUseWasm) {\n try {\n return await this.wasmHash(data)\n } catch {\n ObjectHasher.wasmSupport.allowWasm = false\n }\n }\n /* eslint-enable unicorn/class-reference-in-static-methods */\n throw new Error('No subtle or wasm hashing available')\n }\n\n static async hashBytes(bytes: ArrayBuffer | Uint8Array): Promise<Hash> {\n const bytesArray = new Uint8Array(bytes)\n /* eslint-disable unicorn/class-reference-in-static-methods -- shared static config on base class */\n if (ObjectHasher.allowSubtle) {\n const hashArray = await this.subtleHash(bytesArray)\n return hexFromArrayBuffer(hashArray, { bitLength: 256 }) as Hash\n }\n await this.wasmInitialized\n if (ObjectHasher.wasmSupport.canUseWasm) {\n return await this.wasmHash(bytesArray)\n }\n /* eslint-enable unicorn/class-reference-in-static-methods */\n throw new Error('No subtle or wasm hashing available')\n }\n\n static hashFields<T extends EmptyObject>(obj: T): T {\n const filtered = omitBy(obj, omitByPredicate('_'))\n const cleaned = removeEmptyFields(filtered)\n return sortFields(cleaned) as T\n }\n\n /**\n * Creates an array of payload/hash tuples based on the payloads passed in\n * @param objs Any array of payloads\n * @returns An array of payload/hash tuples\n */\n static async hashPairs<T extends EmptyObject>(objs: T[]): Promise<[T, Hash][]> {\n return await Promise.all(objs.map<Promise<[T, Hash]>>(async obj => [obj, await this.hash(obj)]))\n }\n\n /**\n * Creates an array of payload hashes based on the payloads passed in\n * @param objs Any array of payloads\n * @returns An array of payload hashes\n */\n static async hashes<T extends EmptyObject>(objs?: T[]): Promise<Hash[] | undefined> {\n return objs ? await Promise.all(objs.map(obj => this.hash(obj))) : undefined\n }\n\n /**\n * Returns a clone of the payload that is JSON safe\n * @param obj A payload\n * @param meta Keeps underscore (meta) fields if set to true\n * @returns Returns a clone of the payload that is JSON safe\n */\n static json<T extends EmptyObject>(payload: T, meta = false): T {\n const source = meta ? payload : omitBy(payload, omitByPredicate('_'))\n const cleaned = removeEmptyFields(source)\n return sortFields(cleaned) as T\n }\n\n /** @deprecated us JSON instead */\n static jsonPayload<T extends EmptyObject>(payload: T, meta = false): T {\n return this.json(payload, meta)\n }\n\n static stringifyHashFields<T extends EmptyObject>(obj: T) {\n return JSON.stringify(this.hashFields(obj))\n }\n\n static async subtleHash(data: Uint8Array<ArrayBuffer>): Promise<ArrayBuffer> {\n const pool = this.subtleHashPool\n if (pool === null) return await globalThis.crypto.subtle.digest('SHA-256', data)\n const result: unknown = await pool.queue(async thread => await thread.hash(data))\n return result as ArrayBuffer\n }\n\n static async wasmHash(data: Uint8Array): Promise<Hash> {\n const pool = this.wasmHashPool\n if (pool === null) return asHash(await sha256(data), true)\n const result: unknown = await pool.queue(async thread => await thread.hash(data))\n return result as Hash\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private static createWorkerPool<T extends WorkerModule<any>>(url?: URL, func?: () => unknown, size = 8) {\n if (url) console.debug(`createWorkerPool: ${url.href}`)\n const createFunc = () => spawn<T>(this.createWorker(url, func))\n return Pool(createFunc, size)\n }\n\n async hash(): Promise<Hash> {\n return await ObjectHasher.hash(this.obj)\n }\n\n /**\n * Returns a clone of the payload that is JSON safe\n * @param meta Keeps underscore (meta) fields if set to true\n * @returns Returns a clone of the payload that is JSON safe\n */\n json(meta = false): T {\n return ObjectHasher.json(this.obj, meta)\n }\n}\n\n/** @deprecated use PayloadBuilder or ObjectHasher instead */\nexport class PayloadHasher<T extends object> extends ObjectHasher<T> {}\n", "import type { AnyObject, EmptyObject } from '@xylabs/sdk-js'\nimport { typeOf } from '@xylabs/sdk-js'\n\nexport const removeEmptyFields = <T extends EmptyObject>(obj: T): T => {\n if (obj == null) return obj\n\n if (Array.isArray(obj)) {\n const arr = obj as unknown[]\n return arr.map(value => (typeof value === 'object' ? removeEmptyFields(value as Record<string, unknown>) : value)) as T\n }\n\n const newObject: AnyObject = {}\n for (const [key, value] of Object.entries(obj)) {\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 type { AnyObject, EmptyObject } from '@xylabs/sdk-js'\nimport { isObject } from '@xylabs/sdk-js'\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 // Use default UTF-16 code-unit ordering \u2014 not localeCompare. Locale-aware sorting\n // places \"_\" before \"$\", which breaks stable payload hashes for schema definitions\n // that mix $-prefixed and _-prefixed property names (e.g. storage-meta schemas).\n for (const key of keys.toSorted()) {\n result[key] = subSort(obj[key])\n }\n return result as T\n}\n", "declare const require: <T = unknown>(id: string) => T\n\nexport const subtleHashFunc = () => {\n const { subtle } = require<{ subtle: { digest: (algorithm: string, data: ArrayBuffer) => Promise<ArrayBuffer> } }>('@xylabs/platform')\n const { expose } = require<{ expose: (api: unknown) => void }>('@xylabs/threads/worker')\n\n expose({ hash: async (data: ArrayBuffer) => await subtle.digest('SHA-256', data) })\n}\n", "declare const require: <T = unknown>(id: string) => T\n\nexport const wasmHashFunc = () => {\n const { sha256 } = require<{ sha256: (data: string) => Promise<string> }>('hash-wasm')\n const { asHash } = require<{ asHash: (value: string, branded: true) => string }>('@xylabs/hex')\n\n const { expose } = require<{ expose: (api: unknown) => void }>('@xylabs/threads/worker')\n\n expose({ hash: async (data: string) => asHash(await sha256(data), true) })\n}\n", "import type { EmptyObject } from '@xylabs/sdk-js'\n\nimport { createBrowserWorker } from './createBrowserWorker.ts'\nimport { createNodeWorker } from './createNodeWorker.ts'\nimport { ObjectHasher } from './ObjectHasher.ts'\n\nObjectHasher.createBrowserWorker = createBrowserWorker\nObjectHasher.createNodeWorker = createNodeWorker\n\nexport class BrowserObjectHasher<T extends EmptyObject = EmptyObject> extends ObjectHasher<T> {\n static override readonly createBrowserWorker = createBrowserWorker\n static override readonly createNodeWorker = createNodeWorker\n static override readonly subtleHashWorkerUrl = (() => {\n try {\n return new URL('worker/subtleHash-bundle.mjs', import.meta.url)\n } catch {\n return\n }\n })()\n\n static override readonly wasmHashWorkerUrl = (() => {\n try {\n return new URL('worker/wasmHash-bundle.mjs', import.meta.url)\n } catch {\n return\n }\n })()\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Worker", "sha256", "asHash"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAQ5D,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,WAAW,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAQ5D,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,WAAW,EAAE,KAAK,CAAC,KASrC,CAClB,CAAA"}
|
|
@@ -1,30 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
(() => {
|
|
3
|
-
// ../../../../../../node_modules/.pnpm/@xylabs+threads@6.1.
|
|
3
|
+
// ../../../../../../node_modules/.pnpm/@xylabs+threads@6.1.4_debug@4.4.3_observable-fns@0.6.1/node_modules/@xylabs/threads/dist/browser/worker/worker.browser.mjs
|
|
4
4
|
var DefaultErrorSerializer = {
|
|
5
|
-
deserialize(message) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
deserialize: (message) => {
|
|
6
|
+
const error = Object.create(Error.prototype);
|
|
7
|
+
error.message = message.message;
|
|
8
|
+
error.name = message.name;
|
|
9
|
+
error.stack = message.stack;
|
|
10
|
+
return error;
|
|
10
11
|
},
|
|
11
|
-
serialize(error) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
}
|
|
12
|
+
serialize: (error) => ({
|
|
13
|
+
__error_marker: "$$error",
|
|
14
|
+
message: error.message,
|
|
15
|
+
name: error.name,
|
|
16
|
+
stack: error.stack
|
|
17
|
+
})
|
|
19
18
|
};
|
|
20
|
-
var isSerializedError = (thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
|
|
19
|
+
var isSerializedError = (thing) => thing != null && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
|
|
21
20
|
var DefaultSerializer = {
|
|
22
|
-
deserialize(message)
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
serialize(input) {
|
|
26
|
-
return input instanceof Error ? DefaultErrorSerializer.serialize(input) : input;
|
|
27
|
-
}
|
|
21
|
+
deserialize: (message) => isSerializedError(message) ? DefaultErrorSerializer.deserialize(message) : message,
|
|
22
|
+
serialize: (input) => input instanceof Error ? DefaultErrorSerializer.serialize(input) : input
|
|
28
23
|
};
|
|
29
24
|
globalThis.registeredSerializer = globalThis.registeredSerializer ?? DefaultSerializer;
|
|
30
25
|
function deserialize(message) {
|
|
@@ -34,7 +29,7 @@
|
|
|
34
29
|
return globalThis.registeredSerializer.serialize(input);
|
|
35
30
|
}
|
|
36
31
|
var isSomeObservable = (value) => {
|
|
37
|
-
if (
|
|
32
|
+
if (value == null) {
|
|
38
33
|
return false;
|
|
39
34
|
}
|
|
40
35
|
if (typeof Symbol.observable === "symbol" && typeof value[Symbol.observable] === "function") {
|
|
@@ -47,7 +42,7 @@
|
|
|
47
42
|
};
|
|
48
43
|
var $transferable = /* @__PURE__ */ Symbol("thread.transferable");
|
|
49
44
|
function isTransferDescriptor(thing) {
|
|
50
|
-
return thing && typeof thing === "object" && thing
|
|
45
|
+
return thing != null && typeof thing === "object" && Reflect.get(thing, $transferable) === true;
|
|
51
46
|
}
|
|
52
47
|
var isErrorEvent = (value) => value !== void 0 && value.error !== void 0;
|
|
53
48
|
function createExpose(implementation, self2) {
|
|
@@ -57,7 +52,7 @@
|
|
|
57
52
|
const isMasterJobRunMessage = (thing) => thing?.type === "run";
|
|
58
53
|
const isObservable = (thing) => isSomeObservable(thing) || isZenObservable(thing);
|
|
59
54
|
function isZenObservable(thing) {
|
|
60
|
-
return thing && typeof thing === "object" && typeof thing.subscribe === "function";
|
|
55
|
+
return thing != null && typeof thing === "object" && typeof thing.subscribe === "function";
|
|
61
56
|
}
|
|
62
57
|
function deconstructTransfer(thing) {
|
|
63
58
|
return isTransferDescriptor(thing) ? { payload: thing.send, transferables: thing.transferables } : { payload: thing, transferables: void 0 };
|
|
@@ -184,38 +179,47 @@
|
|
|
184
179
|
throw new Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${exposed}`);
|
|
185
180
|
}
|
|
186
181
|
implementation.subscribeToMasterMessages((messageData) => {
|
|
187
|
-
if (isMasterJobCancelMessage(messageData)) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
182
|
+
if (!isMasterJobCancelMessage(messageData)) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const jobUID = messageData.uid;
|
|
186
|
+
const subscription = activeSubscriptions.get(jobUID);
|
|
187
|
+
if (subscription) {
|
|
188
|
+
subscription.unsubscribe();
|
|
189
|
+
activeSubscriptions.delete(jobUID);
|
|
194
190
|
}
|
|
195
191
|
});
|
|
196
192
|
};
|
|
197
|
-
|
|
193
|
+
const subscribeToBrowserUncaughtErrors = () => {
|
|
194
|
+
if (typeof globalThis === "undefined" || typeof self2.addEventListener !== "function" || !implementation.isWorkerRuntime()) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
198
197
|
self2.addEventListener("error", (event) => {
|
|
199
198
|
setTimeout(() => postUncaughtErrorMessage(isErrorEvent(event) ? event.error : event), 250);
|
|
200
199
|
});
|
|
201
200
|
self2.addEventListener("unhandledrejection", (event) => {
|
|
202
201
|
const error = event.reason;
|
|
203
|
-
if (error && typeof error.message === "string") {
|
|
202
|
+
if (error != null && typeof error === "object" && typeof error.message === "string") {
|
|
204
203
|
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
205
204
|
}
|
|
206
205
|
});
|
|
207
|
-
}
|
|
208
|
-
const
|
|
209
|
-
|
|
206
|
+
};
|
|
207
|
+
const subscribeToNodeUncaughtErrors = () => {
|
|
208
|
+
const nodeProcess = globalThis.process;
|
|
209
|
+
if (nodeProcess === void 0 || typeof nodeProcess.on !== "function" || !implementation.isWorkerRuntime()) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
210
212
|
nodeProcess.on("uncaughtException", (error) => {
|
|
211
213
|
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
212
214
|
});
|
|
213
215
|
nodeProcess.on("unhandledRejection", (error) => {
|
|
214
|
-
if (error && typeof error.message === "string") {
|
|
216
|
+
if (error != null && typeof error === "object" && typeof error.message === "string") {
|
|
215
217
|
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
216
218
|
}
|
|
217
219
|
});
|
|
218
|
-
}
|
|
220
|
+
};
|
|
221
|
+
subscribeToBrowserUncaughtErrors();
|
|
222
|
+
subscribeToNodeUncaughtErrors();
|
|
219
223
|
return expose2;
|
|
220
224
|
}
|
|
221
225
|
var isWorkerRuntime = function isWorkerRuntime2() {
|
|
@@ -249,9 +253,5 @@
|
|
|
249
253
|
});
|
|
250
254
|
|
|
251
255
|
// src/worker/subtleHash.ts
|
|
252
|
-
expose({
|
|
253
|
-
async hash(data) {
|
|
254
|
-
return await globalThis.crypto.subtle.digest("SHA-256", data);
|
|
255
|
-
}
|
|
256
|
-
});
|
|
256
|
+
expose({ hash: async (data) => await globalThis.crypto.subtle.digest("SHA-256", data) });
|
|
257
257
|
})();
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
// src/worker/subtleHash.ts
|
|
2
2
|
import { expose } from "@xylabs/threads/worker";
|
|
3
|
-
expose({
|
|
4
|
-
async hash(data) {
|
|
5
|
-
return await globalThis.crypto.subtle.digest("SHA-256", data);
|
|
6
|
-
}
|
|
7
|
-
});
|
|
3
|
+
expose({ hash: async (data) => await globalThis.crypto.subtle.digest("SHA-256", data) });
|
|
8
4
|
//# sourceMappingURL=subtleHash.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/worker/subtleHash.ts"],
|
|
4
|
-
"sourcesContent": ["import { expose } from '@xylabs/threads/worker'\n\nexpose({
|
|
5
|
-
"mappings": ";AAAA,SAAS,cAAc;AAEvB,OAAO
|
|
4
|
+
"sourcesContent": ["import { expose } from '@xylabs/threads/worker'\n\nexpose({ hash: async (data: ArrayBuffer) => await globalThis.crypto.subtle.digest('SHA-256', data) })\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,cAAc;AAEvB,OAAO,EAAE,MAAM,OAAO,SAAsB,MAAM,WAAW,OAAO,OAAO,OAAO,WAAW,IAAI,EAAE,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtleHashNode.d.ts","sourceRoot":"","sources":["../../../src/worker/subtleHashNode.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"subtleHashNode.d.ts","sourceRoot":"","sources":["../../../src/worker/subtleHashNode.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,YAK1B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
(() => {
|
|
3
|
-
// ../../../../../../node_modules/.pnpm/@xylabs+typeof@6.1.
|
|
3
|
+
// ../../../../../../node_modules/.pnpm/@xylabs+typeof@6.1.4/node_modules/@xylabs/typeof/dist/neutral/index.mjs
|
|
4
4
|
function isUndefined(value) {
|
|
5
5
|
return value === void 0;
|
|
6
6
|
}
|
|
@@ -854,7 +854,7 @@
|
|
|
854
854
|
return _refine(ZodMiniCustom, fn, _params);
|
|
855
855
|
}
|
|
856
856
|
|
|
857
|
-
// ../../../../../../node_modules/.pnpm/@xylabs+error@6.1.
|
|
857
|
+
// ../../../../../../node_modules/.pnpm/@xylabs+error@6.1.4/node_modules/@xylabs/error/dist/neutral/index.mjs
|
|
858
858
|
var assertError = (value, assert, defaultMessage) => {
|
|
859
859
|
if (!isUndefined(assert)) {
|
|
860
860
|
const assertString = typeof assert === "string" ? assert : typeof assert === "boolean" ? defaultMessage : assert(value, defaultMessage);
|
|
@@ -865,7 +865,7 @@
|
|
|
865
865
|
return void 0;
|
|
866
866
|
};
|
|
867
867
|
|
|
868
|
-
// ../../../../../../node_modules/.pnpm/@xylabs+hex@6.1.
|
|
868
|
+
// ../../../../../../node_modules/.pnpm/@xylabs+hex@6.1.4_zod@4.4.3/node_modules/@xylabs/hex/dist/neutral/index.mjs
|
|
869
869
|
var HexRegExMinMax = (minBytes = 0, maxBytes = Number.MAX_SAFE_INTEGER / 2) => {
|
|
870
870
|
return new RegExp(`^[a-f0-9]{${minBytes * 2},${maxBytes * 2}}$`);
|
|
871
871
|
};
|
|
@@ -887,9 +887,10 @@
|
|
|
887
887
|
};
|
|
888
888
|
var isHex = (value, config2) => {
|
|
889
889
|
if (typeof value !== "string") return false;
|
|
890
|
-
const valueCharLength = config2?.prefix
|
|
890
|
+
const valueCharLength = value.length - (config2?.prefix === true ? 2 : 0);
|
|
891
891
|
if (config2?.bitLength !== void 0 && valueCharLength !== bitsToNibbles(config2?.bitLength)) return false;
|
|
892
|
-
|
|
892
|
+
const regex5 = config2?.prefix === true ? HexRegExWithPrefix : HexRegEx;
|
|
893
|
+
return regex5.test(value);
|
|
893
894
|
};
|
|
894
895
|
var hexFromHexString = (value, config2 = {}) => {
|
|
895
896
|
const {
|
|
@@ -903,9 +904,8 @@
|
|
|
903
904
|
const evenCharacters = unEvened.padStart(Math.ceil(unEvened.length / nibbleBoundary) * nibbleBoundary, "0");
|
|
904
905
|
const padded = isNumber(bitLength) ? evenCharacters.padStart(bitLength / 4, "0") : evenCharacters;
|
|
905
906
|
return (prefix ? `0x${padded}` : padded).toLowerCase();
|
|
906
|
-
} else {
|
|
907
|
-
throw new Error("Received string is not a value hex");
|
|
908
907
|
}
|
|
908
|
+
throw new Error("Received string is not a value hex");
|
|
909
909
|
};
|
|
910
910
|
var hexFromArrayBuffer = (buffer, config2) => {
|
|
911
911
|
const unPadded = [...new Uint8Array(buffer)].map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
@@ -1024,31 +1024,26 @@
|
|
|
1024
1024
|
transform((x) => hexToBigInt(toHex(x)))
|
|
1025
1025
|
);
|
|
1026
1026
|
|
|
1027
|
-
// ../../../../../../node_modules/.pnpm/@xylabs+threads@6.1.
|
|
1027
|
+
// ../../../../../../node_modules/.pnpm/@xylabs+threads@6.1.4_debug@4.4.3_observable-fns@0.6.1/node_modules/@xylabs/threads/dist/browser/worker/worker.browser.mjs
|
|
1028
1028
|
var DefaultErrorSerializer = {
|
|
1029
|
-
deserialize(message) {
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1029
|
+
deserialize: (message) => {
|
|
1030
|
+
const error = Object.create(Error.prototype);
|
|
1031
|
+
error.message = message.message;
|
|
1032
|
+
error.name = message.name;
|
|
1033
|
+
error.stack = message.stack;
|
|
1034
|
+
return error;
|
|
1034
1035
|
},
|
|
1035
|
-
serialize(error) {
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
};
|
|
1042
|
-
}
|
|
1036
|
+
serialize: (error) => ({
|
|
1037
|
+
__error_marker: "$$error",
|
|
1038
|
+
message: error.message,
|
|
1039
|
+
name: error.name,
|
|
1040
|
+
stack: error.stack
|
|
1041
|
+
})
|
|
1043
1042
|
};
|
|
1044
|
-
var isSerializedError = (thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
|
|
1043
|
+
var isSerializedError = (thing) => thing != null && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
|
|
1045
1044
|
var DefaultSerializer = {
|
|
1046
|
-
deserialize(message)
|
|
1047
|
-
|
|
1048
|
-
},
|
|
1049
|
-
serialize(input) {
|
|
1050
|
-
return input instanceof Error ? DefaultErrorSerializer.serialize(input) : input;
|
|
1051
|
-
}
|
|
1045
|
+
deserialize: (message) => isSerializedError(message) ? DefaultErrorSerializer.deserialize(message) : message,
|
|
1046
|
+
serialize: (input) => input instanceof Error ? DefaultErrorSerializer.serialize(input) : input
|
|
1052
1047
|
};
|
|
1053
1048
|
globalThis.registeredSerializer = globalThis.registeredSerializer ?? DefaultSerializer;
|
|
1054
1049
|
function deserialize(message) {
|
|
@@ -1058,7 +1053,7 @@
|
|
|
1058
1053
|
return globalThis.registeredSerializer.serialize(input);
|
|
1059
1054
|
}
|
|
1060
1055
|
var isSomeObservable = (value) => {
|
|
1061
|
-
if (
|
|
1056
|
+
if (value == null) {
|
|
1062
1057
|
return false;
|
|
1063
1058
|
}
|
|
1064
1059
|
if (typeof Symbol.observable === "symbol" && typeof value[Symbol.observable] === "function") {
|
|
@@ -1071,7 +1066,7 @@
|
|
|
1071
1066
|
};
|
|
1072
1067
|
var $transferable = /* @__PURE__ */ Symbol("thread.transferable");
|
|
1073
1068
|
function isTransferDescriptor(thing) {
|
|
1074
|
-
return thing && typeof thing === "object" && thing
|
|
1069
|
+
return thing != null && typeof thing === "object" && Reflect.get(thing, $transferable) === true;
|
|
1075
1070
|
}
|
|
1076
1071
|
var isErrorEvent = (value) => value !== void 0 && value.error !== void 0;
|
|
1077
1072
|
function createExpose(implementation, self2) {
|
|
@@ -1081,7 +1076,7 @@
|
|
|
1081
1076
|
const isMasterJobRunMessage = (thing) => thing?.type === "run";
|
|
1082
1077
|
const isObservable = (thing) => isSomeObservable(thing) || isZenObservable(thing);
|
|
1083
1078
|
function isZenObservable(thing) {
|
|
1084
|
-
return thing && typeof thing === "object" && typeof thing.subscribe === "function";
|
|
1079
|
+
return thing != null && typeof thing === "object" && typeof thing.subscribe === "function";
|
|
1085
1080
|
}
|
|
1086
1081
|
function deconstructTransfer(thing) {
|
|
1087
1082
|
return isTransferDescriptor(thing) ? { payload: thing.send, transferables: thing.transferables } : { payload: thing, transferables: void 0 };
|
|
@@ -1208,38 +1203,47 @@
|
|
|
1208
1203
|
throw new Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${exposed}`);
|
|
1209
1204
|
}
|
|
1210
1205
|
implementation.subscribeToMasterMessages((messageData) => {
|
|
1211
|
-
if (isMasterJobCancelMessage(messageData)) {
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1206
|
+
if (!isMasterJobCancelMessage(messageData)) {
|
|
1207
|
+
return;
|
|
1208
|
+
}
|
|
1209
|
+
const jobUID = messageData.uid;
|
|
1210
|
+
const subscription = activeSubscriptions.get(jobUID);
|
|
1211
|
+
if (subscription) {
|
|
1212
|
+
subscription.unsubscribe();
|
|
1213
|
+
activeSubscriptions.delete(jobUID);
|
|
1218
1214
|
}
|
|
1219
1215
|
});
|
|
1220
1216
|
};
|
|
1221
|
-
|
|
1217
|
+
const subscribeToBrowserUncaughtErrors = () => {
|
|
1218
|
+
if (typeof globalThis === "undefined" || typeof self2.addEventListener !== "function" || !implementation.isWorkerRuntime()) {
|
|
1219
|
+
return;
|
|
1220
|
+
}
|
|
1222
1221
|
self2.addEventListener("error", (event) => {
|
|
1223
1222
|
setTimeout(() => postUncaughtErrorMessage(isErrorEvent(event) ? event.error : event), 250);
|
|
1224
1223
|
});
|
|
1225
1224
|
self2.addEventListener("unhandledrejection", (event) => {
|
|
1226
1225
|
const error = event.reason;
|
|
1227
|
-
if (error && typeof error.message === "string") {
|
|
1226
|
+
if (error != null && typeof error === "object" && typeof error.message === "string") {
|
|
1228
1227
|
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
1229
1228
|
}
|
|
1230
1229
|
});
|
|
1231
|
-
}
|
|
1232
|
-
const
|
|
1233
|
-
|
|
1230
|
+
};
|
|
1231
|
+
const subscribeToNodeUncaughtErrors = () => {
|
|
1232
|
+
const nodeProcess = globalThis.process;
|
|
1233
|
+
if (nodeProcess === void 0 || typeof nodeProcess.on !== "function" || !implementation.isWorkerRuntime()) {
|
|
1234
|
+
return;
|
|
1235
|
+
}
|
|
1234
1236
|
nodeProcess.on("uncaughtException", (error) => {
|
|
1235
1237
|
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
1236
1238
|
});
|
|
1237
1239
|
nodeProcess.on("unhandledRejection", (error) => {
|
|
1238
|
-
if (error && typeof error.message === "string") {
|
|
1240
|
+
if (error != null && typeof error === "object" && typeof error.message === "string") {
|
|
1239
1241
|
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
1240
1242
|
}
|
|
1241
1243
|
});
|
|
1242
|
-
}
|
|
1244
|
+
};
|
|
1245
|
+
subscribeToBrowserUncaughtErrors();
|
|
1246
|
+
subscribeToNodeUncaughtErrors();
|
|
1243
1247
|
return expose2;
|
|
1244
1248
|
}
|
|
1245
1249
|
var isWorkerRuntime = function isWorkerRuntime2() {
|
|
@@ -1661,11 +1665,7 @@
|
|
|
1661
1665
|
var mutex = new Mutex();
|
|
1662
1666
|
|
|
1663
1667
|
// src/worker/wasmHash.ts
|
|
1664
|
-
expose({
|
|
1665
|
-
async hash(data) {
|
|
1666
|
-
return asHash(await sha256(data), true);
|
|
1667
|
-
}
|
|
1668
|
-
});
|
|
1668
|
+
expose({ hash: async (data) => asHash(await sha256(data), true) });
|
|
1669
1669
|
})();
|
|
1670
1670
|
/*! Bundled license information:
|
|
1671
1671
|
|
|
@@ -2,9 +2,5 @@
|
|
|
2
2
|
import { asHash } from "@xylabs/sdk-js";
|
|
3
3
|
import { expose } from "@xylabs/threads/worker";
|
|
4
4
|
import { sha256 } from "hash-wasm";
|
|
5
|
-
expose({
|
|
6
|
-
async hash(data) {
|
|
7
|
-
return asHash(await sha256(data), true);
|
|
8
|
-
}
|
|
9
|
-
});
|
|
5
|
+
expose({ hash: async (data) => asHash(await sha256(data), true) });
|
|
10
6
|
//# sourceMappingURL=wasmHash.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/worker/wasmHash.ts"],
|
|
4
|
-
"sourcesContent": ["import { asHash } from '@xylabs/sdk-js'\nimport { expose } from '@xylabs/threads/worker'\nimport { sha256 } from 'hash-wasm'\n\nexpose({
|
|
5
|
-
"mappings": ";AAAA,SAAS,cAAc;AACvB,SAAS,cAAc;AACvB,SAAS,cAAc;AAEvB,OAAO
|
|
4
|
+
"sourcesContent": ["import { asHash } from '@xylabs/sdk-js'\nimport { expose } from '@xylabs/threads/worker'\nimport { sha256 } from 'hash-wasm'\n\nexpose({ hash: async (data: string) => asHash(await sha256(data), true) })\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,cAAc;AACvB,SAAS,cAAc;AACvB,SAAS,cAAc;AAEvB,OAAO,EAAE,MAAM,OAAO,SAAiB,OAAO,MAAM,OAAO,IAAI,GAAG,IAAI,EAAE,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|