@xyo-network/hash 2.90.11 → 2.90.13
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/BrowserPayloadHasher.d.cts +9 -0
- package/dist/browser/BrowserPayloadHasher.d.cts.map +1 -0
- package/dist/browser/BrowserPayloadHasher.d.mts +9 -0
- package/dist/browser/BrowserPayloadHasher.d.mts.map +1 -0
- package/dist/browser/BrowserPayloadHasher.d.ts +9 -0
- package/dist/browser/BrowserPayloadHasher.d.ts.map +1 -0
- package/dist/browser/NodePayloadHasher.d.cts +5 -0
- package/dist/browser/NodePayloadHasher.d.cts.map +1 -0
- package/dist/browser/NodePayloadHasher.d.mts +5 -0
- package/dist/browser/NodePayloadHasher.d.mts.map +1 -0
- package/dist/browser/NodePayloadHasher.d.ts +5 -0
- package/dist/browser/NodePayloadHasher.d.ts.map +1 -0
- package/dist/browser/PayloadHasher.d.cts +14 -10
- package/dist/browser/PayloadHasher.d.cts.map +1 -1
- package/dist/browser/PayloadHasher.d.mts +14 -10
- package/dist/browser/PayloadHasher.d.mts.map +1 -1
- package/dist/browser/PayloadHasher.d.ts +14 -10
- package/dist/browser/PayloadHasher.d.ts.map +1 -1
- package/dist/browser/createBrowserWorker.d.cts +2 -0
- package/dist/browser/createBrowserWorker.d.cts.map +1 -0
- package/dist/browser/createBrowserWorker.d.mts +2 -0
- package/dist/browser/createBrowserWorker.d.mts.map +1 -0
- package/dist/browser/createBrowserWorker.d.ts +2 -0
- package/dist/browser/createBrowserWorker.d.ts.map +1 -0
- package/dist/browser/createNodeWorker.d.cts +2 -0
- package/dist/browser/createNodeWorker.d.cts.map +1 -0
- package/dist/browser/createNodeWorker.d.mts +2 -0
- package/dist/browser/createNodeWorker.d.mts.map +1 -0
- package/dist/browser/createNodeWorker.d.ts +2 -0
- package/dist/browser/createNodeWorker.d.ts.map +1 -0
- package/dist/browser/index-browser.cjs +99 -107
- package/dist/browser/index-browser.cjs.map +1 -1
- package/dist/browser/index-browser.d.cts +1 -1
- package/dist/browser/index-browser.d.cts.map +1 -1
- package/dist/browser/index-browser.d.mts +1 -1
- package/dist/browser/index-browser.d.mts.map +1 -1
- package/dist/browser/index-browser.d.ts +1 -1
- package/dist/browser/index-browser.d.ts.map +1 -1
- package/dist/browser/index-browser.js +98 -106
- package/dist/browser/index-browser.js.map +1 -1
- package/dist/browser/index.d.cts +1 -1
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -1
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/worker/index.cjs +3 -3
- package/dist/browser/worker/index.cjs.map +1 -1
- package/dist/browser/worker/index.d.cts +3 -3
- package/dist/browser/worker/index.d.cts.map +1 -1
- package/dist/browser/worker/index.d.mts +3 -3
- package/dist/browser/worker/index.d.mts.map +1 -1
- package/dist/browser/worker/index.d.ts +3 -3
- package/dist/browser/worker/index.d.ts.map +1 -1
- package/dist/browser/worker/index.js +3 -3
- package/dist/browser/worker/index.js.map +1 -1
- package/dist/browser/worker/jsHash-bundle.js +3322 -0
- package/dist/browser/worker/jsHash.cjs +17 -20
- package/dist/browser/worker/jsHash.cjs.map +1 -1
- package/dist/browser/worker/jsHash.d.cts +1 -1
- package/dist/browser/worker/jsHash.d.cts.map +1 -1
- package/dist/browser/worker/jsHash.d.mts +1 -1
- package/dist/browser/worker/jsHash.d.mts.map +1 -1
- package/dist/browser/worker/jsHash.d.ts +1 -1
- package/dist/browser/worker/jsHash.d.ts.map +1 -1
- package/dist/browser/worker/jsHash.js +8 -23
- package/dist/browser/worker/jsHash.js.map +1 -1
- package/dist/browser/worker/jsHashNode.cjs +37 -0
- package/dist/browser/worker/jsHashNode.cjs.map +1 -0
- package/dist/browser/worker/jsHashNode.d.cts +2 -0
- package/dist/browser/worker/jsHashNode.d.cts.map +1 -0
- package/dist/browser/worker/jsHashNode.d.mts +2 -0
- package/dist/browser/worker/jsHashNode.d.mts.map +1 -0
- package/dist/browser/worker/jsHashNode.d.ts +2 -0
- package/dist/browser/worker/jsHashNode.d.ts.map +1 -0
- package/dist/browser/worker/jsHashNode.js +25 -0
- package/dist/browser/worker/jsHashNode.js.map +1 -0
- package/dist/browser/worker/subtleHash-bundle.js +455 -0
- package/dist/browser/worker/subtleHash.cjs +6 -31
- package/dist/browser/worker/subtleHash.cjs.map +1 -1
- package/dist/browser/worker/subtleHash.d.cts +1 -1
- package/dist/browser/worker/subtleHash.d.cts.map +1 -1
- package/dist/browser/worker/subtleHash.d.mts +1 -1
- package/dist/browser/worker/subtleHash.d.mts.map +1 -1
- package/dist/browser/worker/subtleHash.d.ts +1 -1
- package/dist/browser/worker/subtleHash.d.ts.map +1 -1
- package/dist/browser/worker/subtleHash.js +7 -22
- package/dist/browser/worker/subtleHash.js.map +1 -1
- package/dist/browser/worker/subtleHashNode.cjs +36 -0
- package/dist/browser/worker/subtleHashNode.cjs.map +1 -0
- package/dist/browser/worker/subtleHashNode.d.cts +2 -0
- package/dist/browser/worker/subtleHashNode.d.cts.map +1 -0
- package/dist/browser/worker/subtleHashNode.d.mts +2 -0
- package/dist/browser/worker/subtleHashNode.d.mts.map +1 -0
- package/dist/browser/worker/subtleHashNode.d.ts +2 -0
- package/dist/browser/worker/subtleHashNode.d.ts.map +1 -0
- package/dist/browser/worker/subtleHashNode.js +24 -0
- package/dist/browser/worker/subtleHashNode.js.map +1 -0
- package/dist/browser/worker/wasmHash-bundle.js +893 -0
- package/dist/browser/worker/wasmHash.cjs +7 -32
- package/dist/browser/worker/wasmHash.cjs.map +1 -1
- package/dist/browser/worker/wasmHash.d.cts +1 -1
- package/dist/browser/worker/wasmHash.d.cts.map +1 -1
- package/dist/browser/worker/wasmHash.d.mts +1 -1
- package/dist/browser/worker/wasmHash.d.mts.map +1 -1
- package/dist/browser/worker/wasmHash.d.ts +1 -1
- package/dist/browser/worker/wasmHash.d.ts.map +1 -1
- package/dist/browser/worker/wasmHash.js +8 -23
- package/dist/browser/worker/wasmHash.js.map +1 -1
- package/dist/browser/worker/wasmHashNode.cjs +37 -0
- package/dist/browser/worker/wasmHashNode.cjs.map +1 -0
- package/dist/browser/worker/wasmHashNode.d.cts +2 -0
- package/dist/browser/worker/wasmHashNode.d.cts.map +1 -0
- package/dist/browser/worker/wasmHashNode.d.mts +2 -0
- package/dist/browser/worker/wasmHashNode.d.mts.map +1 -0
- package/dist/browser/worker/wasmHashNode.d.ts +2 -0
- package/dist/browser/worker/wasmHashNode.d.ts.map +1 -0
- package/dist/browser/worker/wasmHashNode.js +25 -0
- package/dist/browser/worker/wasmHashNode.js.map +1 -0
- package/dist/node/BrowserPayloadHasher.d.cts +9 -0
- package/dist/node/BrowserPayloadHasher.d.cts.map +1 -0
- package/dist/node/BrowserPayloadHasher.d.mts +9 -0
- package/dist/node/BrowserPayloadHasher.d.mts.map +1 -0
- package/dist/node/BrowserPayloadHasher.d.ts +9 -0
- package/dist/node/BrowserPayloadHasher.d.ts.map +1 -0
- package/dist/node/NodePayloadHasher.d.cts +5 -0
- package/dist/node/NodePayloadHasher.d.cts.map +1 -0
- package/dist/node/NodePayloadHasher.d.mts +5 -0
- package/dist/node/NodePayloadHasher.d.mts.map +1 -0
- package/dist/node/NodePayloadHasher.d.ts +5 -0
- package/dist/node/NodePayloadHasher.d.ts.map +1 -0
- package/dist/node/PayloadHasher.d.cts +14 -10
- package/dist/node/PayloadHasher.d.cts.map +1 -1
- package/dist/node/PayloadHasher.d.mts +14 -10
- package/dist/node/PayloadHasher.d.mts.map +1 -1
- package/dist/node/PayloadHasher.d.ts +14 -10
- package/dist/node/PayloadHasher.d.ts.map +1 -1
- package/dist/node/createBrowserWorker.d.cts +2 -0
- package/dist/node/createBrowserWorker.d.cts.map +1 -0
- package/dist/node/createBrowserWorker.d.mts +2 -0
- package/dist/node/createBrowserWorker.d.mts.map +1 -0
- package/dist/node/createBrowserWorker.d.ts +2 -0
- package/dist/node/createBrowserWorker.d.ts.map +1 -0
- package/dist/node/createNodeWorker.d.cts +2 -0
- package/dist/node/createNodeWorker.d.cts.map +1 -0
- package/dist/node/createNodeWorker.d.mts +2 -0
- package/dist/node/createNodeWorker.d.mts.map +1 -0
- package/dist/node/createNodeWorker.d.ts +2 -0
- package/dist/node/createNodeWorker.d.ts.map +1 -0
- package/dist/node/index-browser.d.cts +1 -1
- package/dist/node/index-browser.d.cts.map +1 -1
- package/dist/node/index-browser.d.mts +1 -1
- package/dist/node/index-browser.d.mts.map +1 -1
- package/dist/node/index-browser.d.ts +1 -1
- package/dist/node/index-browser.d.ts.map +1 -1
- package/dist/node/index.cjs +63 -89
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -1
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -1
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +63 -89
- package/dist/node/index.js.map +1 -1
- package/dist/node/worker/index.cjs +3 -3
- package/dist/node/worker/index.cjs.map +1 -1
- package/dist/node/worker/index.d.cts +3 -3
- package/dist/node/worker/index.d.cts.map +1 -1
- package/dist/node/worker/index.d.mts +3 -3
- package/dist/node/worker/index.d.mts.map +1 -1
- package/dist/node/worker/index.d.ts +3 -3
- package/dist/node/worker/index.d.ts.map +1 -1
- package/dist/node/worker/index.js +3 -3
- package/dist/node/worker/index.js.map +1 -1
- package/dist/node/worker/jsHash.cjs +17 -24
- package/dist/node/worker/jsHash.cjs.map +1 -1
- package/dist/node/worker/jsHash.d.cts +1 -1
- package/dist/node/worker/jsHash.d.cts.map +1 -1
- package/dist/node/worker/jsHash.d.mts +1 -1
- package/dist/node/worker/jsHash.d.mts.map +1 -1
- package/dist/node/worker/jsHash.d.ts +1 -1
- package/dist/node/worker/jsHash.d.ts.map +1 -1
- package/dist/node/worker/jsHash.js +8 -23
- package/dist/node/worker/jsHash.js.map +1 -1
- package/dist/node/worker/jsHashNode.cjs +41 -0
- package/dist/node/worker/jsHashNode.cjs.map +1 -0
- package/dist/node/worker/jsHashNode.d.cts +2 -0
- package/dist/node/worker/jsHashNode.d.cts.map +1 -0
- package/dist/node/worker/jsHashNode.d.mts +2 -0
- package/dist/node/worker/jsHashNode.d.mts.map +1 -0
- package/dist/node/worker/jsHashNode.d.ts +2 -0
- package/dist/node/worker/jsHashNode.d.ts.map +1 -0
- package/dist/node/worker/jsHashNode.js +25 -0
- package/dist/node/worker/jsHashNode.js.map +1 -0
- package/dist/node/worker/subtleHash.cjs +6 -35
- package/dist/node/worker/subtleHash.cjs.map +1 -1
- package/dist/node/worker/subtleHash.d.cts +1 -1
- package/dist/node/worker/subtleHash.d.cts.map +1 -1
- package/dist/node/worker/subtleHash.d.mts +1 -1
- package/dist/node/worker/subtleHash.d.mts.map +1 -1
- package/dist/node/worker/subtleHash.d.ts +1 -1
- package/dist/node/worker/subtleHash.d.ts.map +1 -1
- package/dist/node/worker/subtleHash.js +7 -22
- package/dist/node/worker/subtleHash.js.map +1 -1
- package/dist/node/worker/subtleHashNode.cjs +40 -0
- package/dist/node/worker/subtleHashNode.cjs.map +1 -0
- package/dist/node/worker/subtleHashNode.d.cts +2 -0
- package/dist/node/worker/subtleHashNode.d.cts.map +1 -0
- package/dist/node/worker/subtleHashNode.d.mts +2 -0
- package/dist/node/worker/subtleHashNode.d.mts.map +1 -0
- package/dist/node/worker/subtleHashNode.d.ts +2 -0
- package/dist/node/worker/subtleHashNode.d.ts.map +1 -0
- package/dist/node/worker/subtleHashNode.js +24 -0
- package/dist/node/worker/subtleHashNode.js.map +1 -0
- package/dist/node/worker/wasmHash.cjs +7 -36
- package/dist/node/worker/wasmHash.cjs.map +1 -1
- package/dist/node/worker/wasmHash.d.cts +1 -1
- package/dist/node/worker/wasmHash.d.cts.map +1 -1
- package/dist/node/worker/wasmHash.d.mts +1 -1
- package/dist/node/worker/wasmHash.d.mts.map +1 -1
- package/dist/node/worker/wasmHash.d.ts +1 -1
- package/dist/node/worker/wasmHash.d.ts.map +1 -1
- package/dist/node/worker/wasmHash.js +8 -23
- package/dist/node/worker/wasmHash.js.map +1 -1
- package/dist/node/worker/wasmHashNode.cjs +41 -0
- package/dist/node/worker/wasmHashNode.cjs.map +1 -0
- package/dist/node/worker/wasmHashNode.d.cts +2 -0
- package/dist/node/worker/wasmHashNode.d.cts.map +1 -0
- package/dist/node/worker/wasmHashNode.d.mts +2 -0
- package/dist/node/worker/wasmHashNode.d.mts.map +1 -0
- package/dist/node/worker/wasmHashNode.d.ts +2 -0
- package/dist/node/worker/wasmHashNode.d.ts.map +1 -0
- package/dist/node/worker/wasmHashNode.js +25 -0
- package/dist/node/worker/wasmHashNode.js.map +1 -0
- package/package.json +17 -10
- package/src/BrowserPayloadHasher.ts +34 -0
- package/src/NodePayloadHasher.ts +8 -0
- package/src/PayloadHasher.ts +40 -82
- package/src/createBrowserWorker.ts +10 -0
- package/src/createNodeWorker.ts +15 -0
- package/src/index-browser.ts +1 -1
- package/src/index.ts +1 -1
- package/src/worker/index.ts +3 -3
- package/src/worker/jsHash.ts +9 -12
- package/src/worker/jsHashNode.ts +13 -0
- package/src/worker/subtleHash.ts +8 -11
- package/src/worker/subtleHashNode.ts +12 -0
- package/src/worker/wasmHash.ts +9 -12
- package/src/worker/wasmHashNode.ts +13 -0
- package/dist/browser/PayloadHasher-browser.d.cts +0 -69
- package/dist/browser/PayloadHasher-browser.d.cts.map +0 -1
- package/dist/browser/PayloadHasher-browser.d.mts +0 -69
- package/dist/browser/PayloadHasher-browser.d.mts.map +0 -1
- package/dist/browser/PayloadHasher-browser.d.ts +0 -69
- package/dist/browser/PayloadHasher-browser.d.ts.map +0 -1
- package/dist/node/PayloadHasher-browser.d.cts +0 -69
- package/dist/node/PayloadHasher-browser.d.cts.map +0 -1
- package/dist/node/PayloadHasher-browser.d.mts +0 -69
- package/dist/node/PayloadHasher-browser.d.mts.map +0 -1
- package/dist/node/PayloadHasher-browser.d.ts +0 -69
- package/dist/node/PayloadHasher-browser.d.ts.map +0 -1
- package/src/PayloadHasher-browser.ts +0 -248
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/worker/subtleHash.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/worker/subtleHash.ts"],"sourcesContent":["import { subtle } from '@xylabs/platform'\n// eslint-disable-next-line import/no-internal-modules\nimport { expose } from 'threads/worker'\n\nexpose({\n async hash(data: ArrayBuffer) {\n return await subtle.digest('SHA-256', data)\n },\n})\n"],"mappings":";AAAA,SAASA,cAAc;AAEvB,SAASC,cAAc;AAEvBA,OAAO;EACL,MAAMC,KAAKC,MAAiB;AAC1B,WAAO,MAAMH,OAAOI,OAAO,WAAWD,IAAAA;EACxC;AACF,CAAA;","names":["subtle","expose","hash","data","digest"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/worker/subtleHashNode.ts
|
|
22
|
+
var subtleHashNode_exports = {};
|
|
23
|
+
__export(subtleHashNode_exports, {
|
|
24
|
+
subtleHashFunc: () => subtleHashFunc
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(subtleHashNode_exports);
|
|
27
|
+
var subtleHashFunc = /* @__PURE__ */ __name(() => {
|
|
28
|
+
const { subtle } = require("@xylabs/platform");
|
|
29
|
+
const { expose } = require("threads/worker");
|
|
30
|
+
expose({
|
|
31
|
+
async hash(data) {
|
|
32
|
+
return await subtle.digest("SHA-256", data);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}, "subtleHashFunc");
|
|
36
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
37
|
+
0 && (module.exports = {
|
|
38
|
+
subtleHashFunc
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=subtleHashNode.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/worker/subtleHashNode.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nexport const subtleHashFunc = () => {\n const { subtle } = require('@xylabs/platform')\n // eslint-disable-next-line import/no-internal-modules\n const { expose } = require('threads/worker')\n\n expose({\n async hash(data: ArrayBuffer) {\n return await subtle.digest('SHA-256', data)\n },\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AACO,IAAMA,iBAAiB,6BAAA;AAC5B,QAAM,EAAEC,OAAM,IAAKC,QAAQ,kBAAA;AAE3B,QAAM,EAAEC,OAAM,IAAKD,QAAQ,gBAAA;AAE3BC,SAAO;IACL,MAAMC,KAAKC,MAAiB;AAC1B,aAAO,MAAMJ,OAAOK,OAAO,WAAWD,IAAAA;IACxC;EACF,CAAA;AACF,GAV8B;","names":["subtleHashFunc","subtle","require","expose","hash","data","digest"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subtleHashNode.d.ts","sourceRoot":"","sources":["../../../src/worker/subtleHashNode.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,YAU1B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subtleHashNode.d.ts","sourceRoot":"","sources":["../../../src/worker/subtleHashNode.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,YAU1B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subtleHashNode.d.ts","sourceRoot":"","sources":["../../../src/worker/subtleHashNode.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,YAU1B,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
4
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
5
|
+
}) : x)(function(x) {
|
|
6
|
+
if (typeof require !== "undefined")
|
|
7
|
+
return require.apply(this, arguments);
|
|
8
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
// src/worker/subtleHashNode.ts
|
|
12
|
+
var subtleHashFunc = /* @__PURE__ */ __name(() => {
|
|
13
|
+
const { subtle } = __require("@xylabs/platform");
|
|
14
|
+
const { expose } = __require("threads/worker");
|
|
15
|
+
expose({
|
|
16
|
+
async hash(data) {
|
|
17
|
+
return await subtle.digest("SHA-256", data);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}, "subtleHashFunc");
|
|
21
|
+
export {
|
|
22
|
+
subtleHashFunc
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=subtleHashNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/worker/subtleHashNode.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nexport const subtleHashFunc = () => {\n const { subtle } = require('@xylabs/platform')\n // eslint-disable-next-line import/no-internal-modules\n const { expose } = require('threads/worker')\n\n expose({\n async hash(data: ArrayBuffer) {\n return await subtle.digest('SHA-256', data)\n },\n })\n}\n"],"mappings":";;;;;;;;;;;AACO,IAAMA,iBAAiB,6BAAA;AAC5B,QAAM,EAAEC,OAAM,IAAKC,UAAQ,kBAAA;AAE3B,QAAM,EAAEC,OAAM,IAAKD,UAAQ,gBAAA;AAE3BC,SAAO;IACL,MAAMC,KAAKC,MAAiB;AAC1B,aAAO,MAAMJ,OAAOK,OAAO,WAAWD,IAAAA;IACxC;EACF,CAAA;AACF,GAV8B;","names":["subtleHashFunc","subtle","require","expose","hash","data","digest"]}
|
|
@@ -1,41 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
2
|
|
|
21
3
|
// src/worker/wasmHash.ts
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const { asHash } = require("@xylabs/hex");
|
|
30
|
-
const { expose } = require("threads/worker");
|
|
31
|
-
expose({
|
|
32
|
-
async hash(data) {
|
|
33
|
-
return asHash(await sha256(data), true);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}, "wasmHashFunc");
|
|
37
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
38
|
-
0 && (module.exports = {
|
|
39
|
-
wasmHashFunc
|
|
4
|
+
var import_hex = require("@xylabs/hex");
|
|
5
|
+
var import_hash_wasm = require("hash-wasm");
|
|
6
|
+
var import_worker = require("threads/worker");
|
|
7
|
+
(0, import_worker.expose)({
|
|
8
|
+
async hash(data) {
|
|
9
|
+
return (0, import_hex.asHash)(await (0, import_hash_wasm.sha256)(data), true);
|
|
10
|
+
}
|
|
40
11
|
});
|
|
41
12
|
//# sourceMappingURL=wasmHash.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/worker/wasmHash.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/worker/wasmHash.ts"],"sourcesContent":["import { asHash } from '@xylabs/hex'\nimport { sha256 } from 'hash-wasm'\n// eslint-disable-next-line import/no-internal-modules\nimport { expose } from 'threads/worker'\n\nexpose({\n async hash(data: string) {\n return asHash(await sha256(data), true)\n },\n})\n"],"mappings":";;;AAAA,iBAAuB;AACvB,uBAAuB;AAEvB,oBAAuB;IAEvBA,sBAAO;EACL,MAAMC,KAAKC,MAAY;AACrB,eAAOC,mBAAO,UAAMC,yBAAOF,IAAAA,GAAO,IAAA;EACpC;AACF,CAAA;","names":["expose","hash","data","asHash","sha256"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=wasmHash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasmHash.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wasmHash.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHash.ts"],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=wasmHash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasmHash.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wasmHash.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHash.ts"],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=wasmHash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasmHash.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wasmHash.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHash.ts"],"names":[],"mappings":""}
|
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
4
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
5
|
-
}) : x)(function(x) {
|
|
6
|
-
if (typeof require !== "undefined")
|
|
7
|
-
return require.apply(this, arguments);
|
|
8
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
9
|
-
});
|
|
10
|
-
|
|
11
1
|
// src/worker/wasmHash.ts
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
});
|
|
21
|
-
}, "wasmHashFunc");
|
|
22
|
-
export {
|
|
23
|
-
wasmHashFunc
|
|
24
|
-
};
|
|
2
|
+
import { asHash } from "@xylabs/hex";
|
|
3
|
+
import { sha256 } from "hash-wasm";
|
|
4
|
+
import { expose } from "threads/worker";
|
|
5
|
+
expose({
|
|
6
|
+
async hash(data) {
|
|
7
|
+
return asHash(await sha256(data), true);
|
|
8
|
+
}
|
|
9
|
+
});
|
|
25
10
|
//# sourceMappingURL=wasmHash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/worker/wasmHash.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/worker/wasmHash.ts"],"sourcesContent":["import { asHash } from '@xylabs/hex'\nimport { sha256 } from 'hash-wasm'\n// eslint-disable-next-line import/no-internal-modules\nimport { expose } from 'threads/worker'\n\nexpose({\n async hash(data: string) {\n return asHash(await sha256(data), true)\n },\n})\n"],"mappings":";AAAA,SAASA,cAAc;AACvB,SAASC,cAAc;AAEvB,SAASC,cAAc;AAEvBA,OAAO;EACL,MAAMC,KAAKC,MAAY;AACrB,WAAOJ,OAAO,MAAMC,OAAOG,IAAAA,GAAO,IAAA;EACpC;AACF,CAAA;","names":["asHash","sha256","expose","hash","data"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/worker/wasmHashNode.ts
|
|
22
|
+
var wasmHashNode_exports = {};
|
|
23
|
+
__export(wasmHashNode_exports, {
|
|
24
|
+
wasmHashFunc: () => wasmHashFunc
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(wasmHashNode_exports);
|
|
27
|
+
var wasmHashFunc = /* @__PURE__ */ __name(() => {
|
|
28
|
+
const { sha256 } = require("hash-wasm");
|
|
29
|
+
const { asHash } = require("@xylabs/hex");
|
|
30
|
+
const { expose } = require("threads/worker");
|
|
31
|
+
expose({
|
|
32
|
+
async hash(data) {
|
|
33
|
+
return asHash(await sha256(data), true);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}, "wasmHashFunc");
|
|
37
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
38
|
+
0 && (module.exports = {
|
|
39
|
+
wasmHashFunc
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=wasmHashNode.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/worker/wasmHashNode.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nexport const wasmHashFunc = () => {\n const { sha256 } = require('hash-wasm')\n const { asHash } = require('@xylabs/hex')\n // eslint-disable-next-line import/no-internal-modules\n const { expose } = require('threads/worker')\n\n expose({\n async hash(data: string) {\n return asHash(await sha256(data), true)\n },\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AACO,IAAMA,eAAe,6BAAA;AAC1B,QAAM,EAAEC,OAAM,IAAKC,QAAQ,WAAA;AAC3B,QAAM,EAAEC,OAAM,IAAKD,QAAQ,aAAA;AAE3B,QAAM,EAAEE,OAAM,IAAKF,QAAQ,gBAAA;AAE3BE,SAAO;IACL,MAAMC,KAAKC,MAAY;AACrB,aAAOH,OAAO,MAAMF,OAAOK,IAAAA,GAAO,IAAA;IACpC;EACF,CAAA;AACF,GAX4B;","names":["wasmHashFunc","sha256","require","asHash","expose","hash","data"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasmHashNode.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHashNode.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,YAWxB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasmHashNode.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHashNode.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,YAWxB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasmHashNode.d.ts","sourceRoot":"","sources":["../../../src/worker/wasmHashNode.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,YAWxB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
4
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
5
|
+
}) : x)(function(x) {
|
|
6
|
+
if (typeof require !== "undefined")
|
|
7
|
+
return require.apply(this, arguments);
|
|
8
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
// src/worker/wasmHashNode.ts
|
|
12
|
+
var wasmHashFunc = /* @__PURE__ */ __name(() => {
|
|
13
|
+
const { sha256 } = __require("hash-wasm");
|
|
14
|
+
const { asHash } = __require("@xylabs/hex");
|
|
15
|
+
const { expose } = __require("threads/worker");
|
|
16
|
+
expose({
|
|
17
|
+
async hash(data) {
|
|
18
|
+
return asHash(await sha256(data), true);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}, "wasmHashFunc");
|
|
22
|
+
export {
|
|
23
|
+
wasmHashFunc
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=wasmHashNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/worker/wasmHashNode.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nexport const wasmHashFunc = () => {\n const { sha256 } = require('hash-wasm')\n const { asHash } = require('@xylabs/hex')\n // eslint-disable-next-line import/no-internal-modules\n const { expose } = require('threads/worker')\n\n expose({\n async hash(data: string) {\n return asHash(await sha256(data), true)\n },\n })\n}\n"],"mappings":";;;;;;;;;;;AACO,IAAMA,eAAe,6BAAA;AAC1B,QAAM,EAAEC,OAAM,IAAKC,UAAQ,WAAA;AAC3B,QAAM,EAAEC,OAAM,IAAKD,UAAQ,aAAA;AAE3B,QAAM,EAAEE,OAAM,IAAKF,UAAQ,gBAAA;AAE3BE,SAAO;IACL,MAAMC,KAAKC,MAAY;AACrB,aAAOH,OAAO,MAAMF,OAAOK,IAAAA,GAAO,IAAA;IACpC;EACF,CAAA;AACF,GAX4B;","names":["wasmHashFunc","sha256","require","asHash","expose","hash","data"]}
|
package/package.json
CHANGED
|
@@ -10,14 +10,13 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^2.14.
|
|
14
|
-
"@xylabs/hex": "^2.14.
|
|
15
|
-
"@xylabs/lodash": "^2.14.
|
|
16
|
-
"@xylabs/object": "^2.89.
|
|
17
|
-
"@xylabs/platform": "^2.14.
|
|
18
|
-
"@xylabs/typeof": "^2.14.
|
|
19
|
-
"@xyo-network/wasm": "~2.90.
|
|
20
|
-
"async-mutex": "^0.4.1",
|
|
13
|
+
"@xylabs/assert": "^2.14.2",
|
|
14
|
+
"@xylabs/hex": "^2.14.2",
|
|
15
|
+
"@xylabs/lodash": "^2.14.2",
|
|
16
|
+
"@xylabs/object": "^2.89.2",
|
|
17
|
+
"@xylabs/platform": "^2.14.2",
|
|
18
|
+
"@xylabs/typeof": "^2.14.2",
|
|
19
|
+
"@xyo-network/wasm": "~2.90.13",
|
|
21
20
|
"hash-wasm": "^4.11.0",
|
|
22
21
|
"sha.js": "^2.4.11",
|
|
23
22
|
"threads": "^1.7.0"
|
|
@@ -25,9 +24,10 @@
|
|
|
25
24
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
26
25
|
"devDependencies": {
|
|
27
26
|
"@types/sha.js": "^2.4.4",
|
|
28
|
-
"@xylabs/delay": "^2.14.
|
|
27
|
+
"@xylabs/delay": "^2.14.2",
|
|
29
28
|
"@xylabs/ts-scripts-yarn3": "^3.2.42",
|
|
30
29
|
"@xylabs/tsconfig": "^3.2.42",
|
|
30
|
+
"esbuild": "^0.20.0",
|
|
31
31
|
"typescript": "^5.3.3"
|
|
32
32
|
},
|
|
33
33
|
"exports": {
|
|
@@ -67,7 +67,14 @@
|
|
|
67
67
|
"type": "git",
|
|
68
68
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
69
69
|
},
|
|
70
|
+
"scripts": {
|
|
71
|
+
"jsHashBundle": "esbuild src/worker/jsHash.ts --bundle --outfile=dist/browser/worker/jsHash-bundle.js --target=chrome120,firefox120,safari14,edge120",
|
|
72
|
+
"subtleHashBundle": "esbuild src/worker/subtleHash.ts --bundle --outfile=dist/browser/worker/subtleHash-bundle.js --target=chrome120,firefox120,safari14,edge120",
|
|
73
|
+
"wasmHashBundle": "esbuild src/worker/wasmHash.ts --bundle --outfile=dist/browser/worker/wasmHash-bundle.js --target=chrome120,firefox120,safari14,edge120",
|
|
74
|
+
"bundle": "yarn jsHashBundle && yarn subtleHashBundle && yarn wasmHashBundle",
|
|
75
|
+
"package-compile": "package-compile-only && yarn bundle"
|
|
76
|
+
},
|
|
70
77
|
"sideEffects": false,
|
|
71
|
-
"version": "2.90.
|
|
78
|
+
"version": "2.90.13",
|
|
72
79
|
"type": "module"
|
|
73
80
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createBrowserWorker } from './createBrowserWorker'
|
|
2
|
+
import { createNodeWorker } from './createNodeWorker'
|
|
3
|
+
import { PayloadHasher } from './PayloadHasher'
|
|
4
|
+
|
|
5
|
+
// We put both in here so that things will work in jsdom/jest
|
|
6
|
+
|
|
7
|
+
PayloadHasher.createBrowserWorker = createBrowserWorker
|
|
8
|
+
PayloadHasher.createNodeWorker = createNodeWorker
|
|
9
|
+
|
|
10
|
+
export class BrowserPayloadHasher extends PayloadHasher {
|
|
11
|
+
static override createBrowserWorker = createBrowserWorker
|
|
12
|
+
static override createNodeWorker = createNodeWorker
|
|
13
|
+
static override jsHashWorkerUrl = (() => {
|
|
14
|
+
try {
|
|
15
|
+
return new URL('worker/jsHash-bundle.js', import.meta.url)
|
|
16
|
+
} catch {
|
|
17
|
+
return
|
|
18
|
+
}
|
|
19
|
+
})()
|
|
20
|
+
static override subtleHashWorkerUrl = (() => {
|
|
21
|
+
try {
|
|
22
|
+
return new URL('worker/subtleHash-bundle.js', import.meta.url)
|
|
23
|
+
} catch {
|
|
24
|
+
return
|
|
25
|
+
}
|
|
26
|
+
})()
|
|
27
|
+
static override wasmHashWorkerUrl = (() => {
|
|
28
|
+
try {
|
|
29
|
+
return new URL('worker/wasmHash-bundle.js', import.meta.url)
|
|
30
|
+
} catch {
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
})()
|
|
34
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createNodeWorker } from './createNodeWorker'
|
|
2
|
+
import { PayloadHasher } from './PayloadHasher'
|
|
3
|
+
|
|
4
|
+
PayloadHasher.createNodeWorker = createNodeWorker
|
|
5
|
+
|
|
6
|
+
export class NodePayloadHasher extends PayloadHasher {
|
|
7
|
+
static override createNodeWorker = createNodeWorker
|
|
8
|
+
}
|
package/src/PayloadHasher.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
1
2
|
import { asHash, Hash, hexFromArrayBuffer } from '@xylabs/hex'
|
|
2
3
|
import { EmptyObject, ObjectWrapper } from '@xylabs/object'
|
|
3
4
|
import { WasmSupport } from '@xyo-network/wasm'
|
|
4
|
-
import { Semaphore } from 'async-mutex'
|
|
5
5
|
import shajs from 'sha.js'
|
|
6
|
-
import { spawn, Worker } from 'threads'
|
|
6
|
+
import { ModuleThread, Pool, spawn, Worker } from 'threads'
|
|
7
|
+
// eslint-disable-next-line import/no-internal-modules
|
|
8
|
+
import { WorkerModule } from 'threads/dist/types/worker'
|
|
7
9
|
|
|
8
10
|
import { removeEmptyFields } from './removeEmptyFields'
|
|
9
11
|
import { deepOmitPrefixedFields } from './removeFields'
|
|
@@ -11,31 +13,45 @@ import { sortFields } from './sortFields'
|
|
|
11
13
|
import { jsHashFunc, subtleHashFunc, wasmHashFunc } from './worker'
|
|
12
14
|
|
|
13
15
|
const wasmSupportStatic = new WasmSupport(['bigInt'])
|
|
14
|
-
const maxHashThreads = 8
|
|
15
|
-
const maxListenersPerThread = 1
|
|
16
16
|
|
|
17
17
|
export class PayloadHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {
|
|
18
18
|
static allowSubtle = true
|
|
19
|
+
static createBrowserWorker?: (url?: URL) => Worker | undefined
|
|
20
|
+
static createNodeWorker?: (func?: () => unknown) => Worker | undefined
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
static
|
|
22
|
-
static readonly jsSemaphore = new Semaphore(maxHashThreads * maxListenersPerThread)
|
|
23
|
-
|
|
24
|
-
static lastJsThreadUsed: number
|
|
25
|
-
static lastSubtleThreadUsed: number
|
|
26
|
-
static lastWasmThreadUsed: number
|
|
22
|
+
static jsHashWorkerUrl?: URL
|
|
23
|
+
static subtleHashWorkerUrl?: URL
|
|
27
24
|
|
|
28
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
-
static readonly subtleHashThreads: any[] = []
|
|
30
|
-
static readonly subtleSemaphore = new Semaphore(maxHashThreads * maxListenersPerThread)
|
|
31
25
|
static warnIfUsingJsHash = true
|
|
32
|
-
|
|
33
|
-
static
|
|
26
|
+
|
|
27
|
+
static wasmHashWorkerUrl?: URL
|
|
34
28
|
|
|
35
29
|
static readonly wasmInitialized = wasmSupportStatic.initialize()
|
|
36
|
-
static readonly wasmSemaphore = new Semaphore(maxHashThreads * maxListenersPerThread)
|
|
37
30
|
static readonly wasmSupport = wasmSupportStatic
|
|
38
31
|
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
private static _jsHashPool?: Pool<ModuleThread<WorkerModule<any>>>
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
+
private static _subtleHashPool?: Pool<ModuleThread<WorkerModule<any>>>
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
private static _wasmHashPool?: Pool<ModuleThread<WorkerModule<any>>>
|
|
38
|
+
|
|
39
|
+
private static get jsHashPool() {
|
|
40
|
+
return (this._jsHashPool = this._jsHashPool ?? this.createWorkerPool(this.jsHashWorkerUrl, jsHashFunc))
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private static get subtleHashPool() {
|
|
44
|
+
return (this._subtleHashPool = this._subtleHashPool ?? this.createWorkerPool(this.subtleHashWorkerUrl, subtleHashFunc))
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
private static get wasmHashPool() {
|
|
48
|
+
return (this._wasmHashPool = this._wasmHashPool ?? this.createWorkerPool(this.wasmHashWorkerUrl, wasmHashFunc))
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
static createWorker(url?: URL, func?: () => unknown) {
|
|
52
|
+
return assertEx(this.createBrowserWorker?.(url) ?? this.createNodeWorker?.(func), 'Unable to create worker')
|
|
53
|
+
}
|
|
54
|
+
|
|
39
55
|
static async filterExcludeByHash<T extends EmptyObject>(objs: T[] = [], hash: Hash[] | Hash): Promise<T[]> {
|
|
40
56
|
const hashes = Array.isArray(hash) ? hash : [hash]
|
|
41
57
|
return (await this.hashPairs(objs)).filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0])
|
|
@@ -112,31 +128,10 @@ export class PayloadHasher<T extends EmptyObject = EmptyObject> extends ObjectWr
|
|
|
112
128
|
}
|
|
113
129
|
|
|
114
130
|
static async jsHash(data: string) {
|
|
115
|
-
await this.jsSemaphore.acquire()
|
|
116
131
|
if (PayloadHasher.warnIfUsingJsHash) {
|
|
117
132
|
console.warn('Using jsHash [No subtle or wasm?]')
|
|
118
133
|
}
|
|
119
|
-
|
|
120
|
-
if (this.jsHashThreads.length < maxHashThreads) {
|
|
121
|
-
const code = jsHashFunc.toString().slice(6)
|
|
122
|
-
const w = new Worker(
|
|
123
|
-
code,
|
|
124
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
125
|
-
{ fromSource: true } as any,
|
|
126
|
-
)
|
|
127
|
-
const worker = await spawn(w)
|
|
128
|
-
this.jsHashThreads.push(worker)
|
|
129
|
-
}
|
|
130
|
-
let threadToUse = this.lastJsThreadUsed === undefined ? 0 : this.lastJsThreadUsed + 1
|
|
131
|
-
if (threadToUse >= this.jsHashThreads.length) {
|
|
132
|
-
threadToUse = 0
|
|
133
|
-
}
|
|
134
|
-
this.lastJsThreadUsed = threadToUse
|
|
135
|
-
|
|
136
|
-
return await this.jsHashThreads[threadToUse].hash(data)
|
|
137
|
-
} finally {
|
|
138
|
-
this.jsSemaphore.release()
|
|
139
|
-
}
|
|
134
|
+
return await this.jsHashPool.queue(async (thread) => await thread.hash(data))
|
|
140
135
|
}
|
|
141
136
|
|
|
142
137
|
/**
|
|
@@ -159,53 +154,16 @@ export class PayloadHasher<T extends EmptyObject = EmptyObject> extends ObjectWr
|
|
|
159
154
|
}
|
|
160
155
|
|
|
161
156
|
static async subtleHash(data: Uint8Array): Promise<ArrayBuffer> {
|
|
162
|
-
await this.
|
|
163
|
-
try {
|
|
164
|
-
if (this.subtleHashThreads.length < maxHashThreads) {
|
|
165
|
-
const code = subtleHashFunc.toString().slice(6)
|
|
166
|
-
const w = new Worker(
|
|
167
|
-
code,
|
|
168
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
169
|
-
{ fromSource: true } as any,
|
|
170
|
-
)
|
|
171
|
-
const worker = await spawn(w)
|
|
172
|
-
this.subtleHashThreads.push(worker)
|
|
173
|
-
}
|
|
174
|
-
let threadToUse = this.lastSubtleThreadUsed === undefined ? 0 : this.lastSubtleThreadUsed + 1
|
|
175
|
-
if (threadToUse >= this.subtleHashThreads.length) {
|
|
176
|
-
threadToUse = 0
|
|
177
|
-
}
|
|
178
|
-
this.lastSubtleThreadUsed = threadToUse
|
|
179
|
-
|
|
180
|
-
return await this.subtleHashThreads[threadToUse].hash(data)
|
|
181
|
-
} finally {
|
|
182
|
-
this.subtleSemaphore.release()
|
|
183
|
-
}
|
|
157
|
+
return await this.subtleHashPool.queue(async (thread) => await thread.hash(data))
|
|
184
158
|
}
|
|
185
159
|
|
|
186
160
|
static async wasmHash(data: string) {
|
|
187
|
-
await this.
|
|
188
|
-
|
|
189
|
-
if (this.wasmHashThreads.length < maxHashThreads) {
|
|
190
|
-
const code = wasmHashFunc.toString().slice(6)
|
|
191
|
-
const w = new Worker(
|
|
192
|
-
code,
|
|
193
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
194
|
-
{ fromSource: true } as any,
|
|
195
|
-
)
|
|
196
|
-
const worker = await spawn(w)
|
|
197
|
-
this.wasmHashThreads.push(worker)
|
|
198
|
-
}
|
|
199
|
-
let threadToUse = this.lastWasmThreadUsed === undefined ? 0 : this.lastWasmThreadUsed + 1
|
|
200
|
-
if (threadToUse >= this.wasmHashThreads.length) {
|
|
201
|
-
threadToUse = 0
|
|
202
|
-
}
|
|
203
|
-
this.lastWasmThreadUsed = threadToUse
|
|
161
|
+
return await this.wasmHashPool.queue(async (thread) => await thread.hash(data))
|
|
162
|
+
}
|
|
204
163
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}
|
|
164
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
165
|
+
private static createWorkerPool<T extends WorkerModule<any>>(url?: URL, func?: () => unknown, size = 8) {
|
|
166
|
+
return Pool(() => spawn<T>(this.createWorker(url, func)), size)
|
|
209
167
|
}
|
|
210
168
|
|
|
211
169
|
async hash(): Promise<Hash> {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Worker } from 'threads'
|
|
2
|
+
|
|
3
|
+
export const createNodeWorker = (func?: () => unknown) => {
|
|
4
|
+
try {
|
|
5
|
+
const code = func?.toString().slice(6) ?? ''
|
|
6
|
+
const w = new Worker(
|
|
7
|
+
code,
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
{ fromSource: true } as any,
|
|
10
|
+
)
|
|
11
|
+
return w
|
|
12
|
+
} catch {
|
|
13
|
+
return
|
|
14
|
+
}
|
|
15
|
+
}
|