@xyo-network/hash 2.110.10 → 2.110.12
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 +0 -1
- package/dist/browser/BrowserPayloadHasher.d.cts.map +1 -1
- package/dist/browser/BrowserPayloadHasher.d.mts +0 -1
- package/dist/browser/BrowserPayloadHasher.d.mts.map +1 -1
- package/dist/browser/BrowserPayloadHasher.d.ts +0 -1
- package/dist/browser/BrowserPayloadHasher.d.ts.map +1 -1
- package/dist/browser/PayloadHasher.d.cts +0 -5
- package/dist/browser/PayloadHasher.d.cts.map +1 -1
- package/dist/browser/PayloadHasher.d.mts +0 -5
- package/dist/browser/PayloadHasher.d.mts.map +1 -1
- package/dist/browser/PayloadHasher.d.ts +0 -5
- package/dist/browser/PayloadHasher.d.ts.map +1 -1
- package/dist/browser/createNodeWorker.d.cts.map +1 -1
- package/dist/browser/createNodeWorker.d.mts.map +1 -1
- package/dist/browser/createNodeWorker.d.ts.map +1 -1
- package/dist/browser/index-browser.cjs +72 -144
- package/dist/browser/index-browser.cjs.map +1 -1
- package/dist/browser/index-browser.js +72 -135
- package/dist/browser/index-browser.js.map +1 -1
- package/dist/browser/removeEmptyFields.d.cts.map +1 -1
- package/dist/browser/removeEmptyFields.d.mts.map +1 -1
- package/dist/browser/removeEmptyFields.d.ts.map +1 -1
- package/dist/browser/worker/index.cjs +4 -18
- package/dist/browser/worker/index.cjs.map +1 -1
- package/dist/browser/worker/index.d.cts +0 -1
- package/dist/browser/worker/index.d.cts.map +1 -1
- package/dist/browser/worker/index.d.mts +0 -1
- package/dist/browser/worker/index.d.mts.map +1 -1
- package/dist/browser/worker/index.d.ts +0 -1
- package/dist/browser/worker/index.d.ts.map +1 -1
- package/dist/browser/worker/index.js +4 -19
- package/dist/browser/worker/index.js.map +1 -1
- package/dist/browser/worker/subtleHash-bundle.js +92 -91
- package/dist/browser/worker/subtleHash.cjs.map +1 -1
- package/dist/browser/worker/subtleHash.js.map +1 -1
- package/dist/browser/worker/subtleHashNode.cjs +2 -3
- package/dist/browser/worker/subtleHashNode.cjs.map +1 -1
- package/dist/browser/worker/subtleHashNode.d.cts.map +1 -1
- package/dist/browser/worker/subtleHashNode.d.mts.map +1 -1
- package/dist/browser/worker/subtleHashNode.d.ts.map +1 -1
- package/dist/browser/worker/subtleHashNode.js +2 -4
- package/dist/browser/worker/subtleHashNode.js.map +1 -1
- package/dist/browser/worker/wasmHash-bundle.js +94 -93
- package/dist/browser/worker/wasmHash.cjs.map +1 -1
- package/dist/browser/worker/wasmHash.js.map +1 -1
- package/dist/browser/worker/wasmHashNode.cjs +2 -3
- package/dist/browser/worker/wasmHashNode.cjs.map +1 -1
- package/dist/browser/worker/wasmHashNode.js +2 -4
- package/dist/browser/worker/wasmHashNode.js.map +1 -1
- package/dist/neutral/BrowserPayloadHasher.d.cts +0 -1
- package/dist/neutral/BrowserPayloadHasher.d.cts.map +1 -1
- package/dist/neutral/BrowserPayloadHasher.d.mts +0 -1
- package/dist/neutral/BrowserPayloadHasher.d.mts.map +1 -1
- package/dist/neutral/BrowserPayloadHasher.d.ts +0 -1
- package/dist/neutral/BrowserPayloadHasher.d.ts.map +1 -1
- package/dist/neutral/PayloadHasher.d.cts +0 -5
- package/dist/neutral/PayloadHasher.d.cts.map +1 -1
- package/dist/neutral/PayloadHasher.d.mts +0 -5
- package/dist/neutral/PayloadHasher.d.mts.map +1 -1
- package/dist/neutral/PayloadHasher.d.ts +0 -5
- package/dist/neutral/PayloadHasher.d.ts.map +1 -1
- package/dist/neutral/createNodeWorker.d.cts.map +1 -1
- package/dist/neutral/createNodeWorker.d.mts.map +1 -1
- package/dist/neutral/createNodeWorker.d.ts.map +1 -1
- package/dist/neutral/index.cjs +72 -137
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +72 -128
- package/dist/neutral/index.js.map +1 -1
- package/dist/neutral/removeEmptyFields.d.cts.map +1 -1
- package/dist/neutral/removeEmptyFields.d.mts.map +1 -1
- package/dist/neutral/removeEmptyFields.d.ts.map +1 -1
- package/dist/neutral/worker/index.d.cts +0 -1
- package/dist/neutral/worker/index.d.cts.map +1 -1
- package/dist/neutral/worker/index.d.mts +0 -1
- package/dist/neutral/worker/index.d.mts.map +1 -1
- package/dist/neutral/worker/index.d.ts +0 -1
- package/dist/neutral/worker/index.d.ts.map +1 -1
- package/dist/neutral/worker/subtleHashNode.d.cts.map +1 -1
- package/dist/neutral/worker/subtleHashNode.d.mts.map +1 -1
- package/dist/neutral/worker/subtleHashNode.d.ts.map +1 -1
- package/dist/node/BrowserPayloadHasher.d.cts +0 -1
- package/dist/node/BrowserPayloadHasher.d.cts.map +1 -1
- package/dist/node/BrowserPayloadHasher.d.mts +0 -1
- package/dist/node/BrowserPayloadHasher.d.mts.map +1 -1
- package/dist/node/BrowserPayloadHasher.d.ts +0 -1
- package/dist/node/BrowserPayloadHasher.d.ts.map +1 -1
- package/dist/node/PayloadHasher.d.cts +0 -5
- package/dist/node/PayloadHasher.d.cts.map +1 -1
- package/dist/node/PayloadHasher.d.mts +0 -5
- package/dist/node/PayloadHasher.d.mts.map +1 -1
- package/dist/node/PayloadHasher.d.ts +0 -5
- package/dist/node/PayloadHasher.d.ts.map +1 -1
- package/dist/node/createNodeWorker.d.cts.map +1 -1
- package/dist/node/createNodeWorker.d.mts.map +1 -1
- package/dist/node/createNodeWorker.d.ts.map +1 -1
- package/dist/node/index.cjs +96 -161
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +96 -152
- package/dist/node/index.js.map +1 -1
- package/dist/node/removeEmptyFields.d.cts.map +1 -1
- package/dist/node/removeEmptyFields.d.mts.map +1 -1
- package/dist/node/removeEmptyFields.d.ts.map +1 -1
- package/dist/node/worker/index.cjs +4 -19
- package/dist/node/worker/index.cjs.map +1 -1
- package/dist/node/worker/index.d.cts +0 -1
- package/dist/node/worker/index.d.cts.map +1 -1
- package/dist/node/worker/index.d.mts +0 -1
- package/dist/node/worker/index.d.mts.map +1 -1
- package/dist/node/worker/index.d.ts +0 -1
- package/dist/node/worker/index.d.ts.map +1 -1
- package/dist/node/worker/index.js +4 -19
- package/dist/node/worker/index.js.map +1 -1
- package/dist/node/worker/subtleHash.cjs.map +1 -1
- package/dist/node/worker/subtleHash.js.map +1 -1
- package/dist/node/worker/subtleHashNode.cjs +2 -3
- package/dist/node/worker/subtleHashNode.cjs.map +1 -1
- package/dist/node/worker/subtleHashNode.d.cts.map +1 -1
- package/dist/node/worker/subtleHashNode.d.mts.map +1 -1
- package/dist/node/worker/subtleHashNode.d.ts.map +1 -1
- package/dist/node/worker/subtleHashNode.js +2 -4
- package/dist/node/worker/subtleHashNode.js.map +1 -1
- package/dist/node/worker/wasmHash.cjs.map +1 -1
- package/dist/node/worker/wasmHash.js.map +1 -1
- package/dist/node/worker/wasmHashNode.cjs +2 -3
- package/dist/node/worker/wasmHashNode.cjs.map +1 -1
- package/dist/node/worker/wasmHashNode.js +2 -4
- package/dist/node/worker/wasmHashNode.js.map +1 -1
- package/package.json +14 -17
- package/src/BrowserPayloadHasher.ts +0 -7
- package/src/PayloadHasher.ts +2 -41
- package/src/createNodeWorker.ts +1 -2
- package/src/globals.d.ts +0 -1
- package/src/removeEmptyFields.ts +5 -1
- package/src/worker/index.ts +0 -1
- package/src/worker/subtleHash.ts +0 -1
- package/src/worker/subtleHashNode.ts +0 -1
- package/src/worker/wasmHash.ts +0 -1
- package/src/worker/wasmHashNode.ts +1 -1
- package/xy.config.ts +0 -1
- package/dist/browser/worker/jsHash-bundle.js +0 -5641
- package/dist/browser/worker/jsHash.cjs +0 -34
- package/dist/browser/worker/jsHash.cjs.map +0 -1
- package/dist/browser/worker/jsHash.d.cts +0 -2
- package/dist/browser/worker/jsHash.d.cts.map +0 -1
- package/dist/browser/worker/jsHash.d.mts +0 -2
- package/dist/browser/worker/jsHash.d.mts.map +0 -1
- package/dist/browser/worker/jsHash.d.ts +0 -2
- package/dist/browser/worker/jsHash.d.ts.map +0 -1
- package/dist/browser/worker/jsHash.js +0 -10
- package/dist/browser/worker/jsHash.js.map +0 -1
- package/dist/browser/worker/jsHashNode.cjs +0 -37
- package/dist/browser/worker/jsHashNode.cjs.map +0 -1
- package/dist/browser/worker/jsHashNode.d.cts +0 -2
- package/dist/browser/worker/jsHashNode.d.cts.map +0 -1
- package/dist/browser/worker/jsHashNode.d.mts +0 -2
- package/dist/browser/worker/jsHashNode.d.mts.map +0 -1
- package/dist/browser/worker/jsHashNode.d.ts +0 -2
- package/dist/browser/worker/jsHashNode.d.ts.map +0 -1
- package/dist/browser/worker/jsHashNode.js +0 -24
- package/dist/browser/worker/jsHashNode.js.map +0 -1
- package/dist/neutral/worker/jsHash.d.cts +0 -2
- package/dist/neutral/worker/jsHash.d.cts.map +0 -1
- package/dist/neutral/worker/jsHash.d.mts +0 -2
- package/dist/neutral/worker/jsHash.d.mts.map +0 -1
- package/dist/neutral/worker/jsHash.d.ts +0 -2
- package/dist/neutral/worker/jsHash.d.ts.map +0 -1
- package/dist/neutral/worker/jsHashNode.d.cts +0 -2
- package/dist/neutral/worker/jsHashNode.d.cts.map +0 -1
- package/dist/neutral/worker/jsHashNode.d.mts +0 -2
- package/dist/neutral/worker/jsHashNode.d.mts.map +0 -1
- package/dist/neutral/worker/jsHashNode.d.ts +0 -2
- package/dist/neutral/worker/jsHashNode.d.ts.map +0 -1
- package/dist/node/worker/jsHash.cjs +0 -34
- package/dist/node/worker/jsHash.cjs.map +0 -1
- package/dist/node/worker/jsHash.d.cts +0 -2
- package/dist/node/worker/jsHash.d.cts.map +0 -1
- package/dist/node/worker/jsHash.d.mts +0 -2
- package/dist/node/worker/jsHash.d.mts.map +0 -1
- package/dist/node/worker/jsHash.d.ts +0 -2
- package/dist/node/worker/jsHash.d.ts.map +0 -1
- package/dist/node/worker/jsHash.js +0 -10
- package/dist/node/worker/jsHash.js.map +0 -1
- package/dist/node/worker/jsHashNode.cjs +0 -41
- package/dist/node/worker/jsHashNode.cjs.map +0 -1
- package/dist/node/worker/jsHashNode.d.cts +0 -2
- package/dist/node/worker/jsHashNode.d.cts.map +0 -1
- package/dist/node/worker/jsHashNode.d.mts +0 -2
- package/dist/node/worker/jsHashNode.d.mts.map +0 -1
- package/dist/node/worker/jsHashNode.d.ts +0 -2
- package/dist/node/worker/jsHashNode.d.ts.map +0 -1
- package/dist/node/worker/jsHashNode.js +0 -24
- package/dist/node/worker/jsHashNode.js.map +0 -1
- package/src/worker/jsHash.ts +0 -10
- package/src/worker/jsHashNode.ts +0 -13
package/dist/node/index.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
4
1
|
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
5
2
|
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
6
3
|
}) : x)(function(x) {
|
|
7
4
|
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
8
5
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
9
6
|
});
|
|
10
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
11
7
|
|
|
12
8
|
// src/hasEmptyFields.ts
|
|
13
9
|
import { typeOf } from "@xylabs/typeof";
|
|
14
|
-
var hasEmptyFields =
|
|
10
|
+
var hasEmptyFields = (obj) => {
|
|
15
11
|
if (obj === null || Array.isArray(obj)) return false;
|
|
16
12
|
if (obj === void 0 || Object.keys(obj).length === 0) return true;
|
|
17
13
|
for (const [value] of Object.values(obj)) {
|
|
@@ -22,25 +18,22 @@ var hasEmptyFields = /* @__PURE__ */ __name((obj) => {
|
|
|
22
18
|
}
|
|
23
19
|
}
|
|
24
20
|
return false;
|
|
25
|
-
}
|
|
21
|
+
};
|
|
26
22
|
|
|
27
23
|
// src/createNodeWorker.ts
|
|
28
24
|
import { Worker } from "@xylabs/threads";
|
|
29
|
-
var createNodeWorker =
|
|
25
|
+
var createNodeWorker = (func) => {
|
|
30
26
|
try {
|
|
31
27
|
const code = (func == null ? void 0 : func.toString().slice(6)) ?? "";
|
|
32
|
-
|
|
28
|
+
return new Worker(
|
|
33
29
|
code,
|
|
34
30
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
-
{
|
|
36
|
-
fromSource: true
|
|
37
|
-
}
|
|
31
|
+
{ fromSource: true }
|
|
38
32
|
);
|
|
39
|
-
return w;
|
|
40
33
|
} catch {
|
|
41
34
|
return;
|
|
42
35
|
}
|
|
43
|
-
}
|
|
36
|
+
};
|
|
44
37
|
|
|
45
38
|
// src/PayloadHasher.ts
|
|
46
39
|
import { assertEx } from "@xylabs/assert";
|
|
@@ -51,12 +44,14 @@ import { subtle } from "@xylabs/platform";
|
|
|
51
44
|
import { Pool, spawn } from "@xylabs/threads";
|
|
52
45
|
import { WasmSupport } from "@xyo-network/wasm";
|
|
53
46
|
import { sha256 } from "hash-wasm";
|
|
54
|
-
import shajs from "sha.js";
|
|
55
47
|
|
|
56
48
|
// src/removeEmptyFields.ts
|
|
57
49
|
import { typeOf as typeOf2 } from "@xylabs/typeof";
|
|
58
|
-
var removeEmptyFields =
|
|
59
|
-
if (obj === null
|
|
50
|
+
var removeEmptyFields = (obj) => {
|
|
51
|
+
if (obj === null) return obj;
|
|
52
|
+
if (Array.isArray(obj)) {
|
|
53
|
+
return obj.map((value) => typeof value === "object" ? removeEmptyFields(value) : value);
|
|
54
|
+
}
|
|
60
55
|
const newObject = {};
|
|
61
56
|
for (const [key, value] of Object.entries(obj)) {
|
|
62
57
|
if (typeOf2(value) === "object") {
|
|
@@ -66,36 +61,24 @@ var removeEmptyFields = /* @__PURE__ */ __name((obj) => {
|
|
|
66
61
|
}
|
|
67
62
|
}
|
|
68
63
|
return newObject;
|
|
69
|
-
}
|
|
64
|
+
};
|
|
70
65
|
|
|
71
66
|
// src/sortFields.ts
|
|
72
67
|
import { isObject } from "@xylabs/object";
|
|
73
|
-
var subSort =
|
|
68
|
+
var subSort = (value) => {
|
|
74
69
|
return isObject(value) ? sortFields(value) : value;
|
|
75
|
-
}
|
|
76
|
-
var sortFields =
|
|
70
|
+
};
|
|
71
|
+
var sortFields = (obj) => {
|
|
77
72
|
const result = {};
|
|
78
73
|
const keys = Object.keys(obj);
|
|
79
74
|
for (const key of keys.sort()) {
|
|
80
75
|
result[key] = subSort(obj[key]);
|
|
81
76
|
}
|
|
82
77
|
return result;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// src/worker/jsHashNode.ts
|
|
86
|
-
var jsHashFunc = /* @__PURE__ */ __name(() => {
|
|
87
|
-
const shajs2 = __require("sha.js");
|
|
88
|
-
const { asHash: asHash2 } = __require("@xylabs/hex");
|
|
89
|
-
const { expose } = __require("@xylabs/threads/worker");
|
|
90
|
-
expose({
|
|
91
|
-
hash(data) {
|
|
92
|
-
return asHash2(shajs2("sha256").update(data).digest().toString("hex"), true);
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
}, "jsHashFunc");
|
|
78
|
+
};
|
|
96
79
|
|
|
97
80
|
// src/worker/subtleHashNode.ts
|
|
98
|
-
var subtleHashFunc =
|
|
81
|
+
var subtleHashFunc = () => {
|
|
99
82
|
const { subtle: subtle2 } = __require("@xylabs/platform");
|
|
100
83
|
const { expose } = __require("@xylabs/threads/worker");
|
|
101
84
|
expose({
|
|
@@ -103,10 +86,10 @@ var subtleHashFunc = /* @__PURE__ */ __name(() => {
|
|
|
103
86
|
return await subtle2.digest("SHA-256", data);
|
|
104
87
|
}
|
|
105
88
|
});
|
|
106
|
-
}
|
|
89
|
+
};
|
|
107
90
|
|
|
108
91
|
// src/worker/wasmHashNode.ts
|
|
109
|
-
var wasmHashFunc =
|
|
92
|
+
var wasmHashFunc = () => {
|
|
110
93
|
const { sha256: sha2562 } = __require("hash-wasm");
|
|
111
94
|
const { asHash: asHash2 } = __require("@xylabs/hex");
|
|
112
95
|
const { expose } = __require("@xylabs/threads/worker");
|
|
@@ -115,29 +98,37 @@ var wasmHashFunc = /* @__PURE__ */ __name(() => {
|
|
|
115
98
|
return asHash2(await sha2562(data), true);
|
|
116
99
|
}
|
|
117
100
|
});
|
|
118
|
-
}
|
|
101
|
+
};
|
|
119
102
|
|
|
120
103
|
// src/PayloadHasher.ts
|
|
121
|
-
var wasmSupportStatic = new WasmSupport([
|
|
122
|
-
|
|
123
|
-
]);
|
|
124
|
-
var omitByPredicate = /* @__PURE__ */ __name((prefix) => (_, key) => {
|
|
104
|
+
var wasmSupportStatic = new WasmSupport(["bigInt"]);
|
|
105
|
+
var omitByPredicate = (prefix) => (_, key) => {
|
|
125
106
|
assertEx(typeof key === "string", () => `Invalid key type [${key}, ${typeof key}]`);
|
|
126
107
|
return key.startsWith(prefix);
|
|
127
|
-
}
|
|
128
|
-
var
|
|
129
|
-
static
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
console.warn("
|
|
137
|
-
this._jsHashPool = null;
|
|
138
|
-
return null;
|
|
108
|
+
};
|
|
109
|
+
var PayloadHasher = class _PayloadHasher extends ObjectWrapper {
|
|
110
|
+
static allowHashPooling = true;
|
|
111
|
+
static allowSubtle = true;
|
|
112
|
+
static createBrowserWorker;
|
|
113
|
+
static createNodeWorker;
|
|
114
|
+
static initialized = (() => {
|
|
115
|
+
globalThis.xyo = globalThis.xyo ?? {};
|
|
116
|
+
if (globalThis.xyo.hashing) {
|
|
117
|
+
console.warn("Two static instances of PayloadHasher detected");
|
|
139
118
|
}
|
|
140
|
-
}
|
|
119
|
+
})();
|
|
120
|
+
static subtleHashWorkerUrl;
|
|
121
|
+
static warnIfUsingJsHash = true;
|
|
122
|
+
static wasmHashWorkerUrl;
|
|
123
|
+
static wasmInitialized = wasmSupportStatic.initialize();
|
|
124
|
+
static wasmSupport = wasmSupportStatic;
|
|
125
|
+
// These get set to null if they fail to create and then we just don't use workers - needed for storybook
|
|
126
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
|
+
static _jsHashPool;
|
|
128
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
129
|
+
static _subtleHashPool;
|
|
130
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
131
|
+
static _wasmHashPool;
|
|
141
132
|
static get subtleHashPool() {
|
|
142
133
|
if (!this.allowHashPooling || this._subtleHashPool === null) {
|
|
143
134
|
return null;
|
|
@@ -169,16 +160,12 @@ var _PayloadHasher = class _PayloadHasher extends ObjectWrapper {
|
|
|
169
160
|
}
|
|
170
161
|
static async filterExcludeByHash(objs = [], hash) {
|
|
171
162
|
var _a;
|
|
172
|
-
const hashes = Array.isArray(hash) ? hash : [
|
|
173
|
-
hash
|
|
174
|
-
];
|
|
163
|
+
const hashes = Array.isArray(hash) ? hash : [hash];
|
|
175
164
|
return (_a = (await this.hashPairs(objs)).filter(([_, objHash]) => !hashes.includes(objHash))) == null ? void 0 : _a.map((pair) => pair[0]);
|
|
176
165
|
}
|
|
177
166
|
static async filterIncludeByHash(objs = [], hash) {
|
|
178
167
|
var _a;
|
|
179
|
-
const hashes = Array.isArray(hash) ? hash : [
|
|
180
|
-
hash
|
|
181
|
-
];
|
|
168
|
+
const hashes = Array.isArray(hash) ? hash : [hash];
|
|
182
169
|
return (_a = (await this.hashPairs(objs)).filter(([_, objHash]) => hashes.includes(objHash))) == null ? void 0 : _a.map((pair) => pair[0]);
|
|
183
170
|
}
|
|
184
171
|
static async findByHash(objs = [], hash) {
|
|
@@ -186,10 +173,10 @@ var _PayloadHasher = class _PayloadHasher extends ObjectWrapper {
|
|
|
186
173
|
return (_a = (await this.hashPairs(objs)).find(([_, objHash]) => objHash === hash)) == null ? void 0 : _a[0];
|
|
187
174
|
}
|
|
188
175
|
/**
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
176
|
+
* Asynchronously hashes a payload
|
|
177
|
+
* @param obj A payload
|
|
178
|
+
* @returns The payload hash
|
|
179
|
+
*/
|
|
193
180
|
static async hash(obj) {
|
|
194
181
|
const stringToHash = this.stringifyHashFields(obj);
|
|
195
182
|
if (_PayloadHasher.allowSubtle) {
|
|
@@ -197,9 +184,7 @@ var _PayloadHasher = class _PayloadHasher extends ObjectWrapper {
|
|
|
197
184
|
const enc = new TextEncoder();
|
|
198
185
|
const data = enc.encode(stringToHash);
|
|
199
186
|
const hashArray = await this.subtleHash(data);
|
|
200
|
-
return hexFromArrayBuffer(hashArray, {
|
|
201
|
-
bitLength: 256
|
|
202
|
-
});
|
|
187
|
+
return hexFromArrayBuffer(hashArray, { bitLength: 256 });
|
|
203
188
|
} catch {
|
|
204
189
|
_PayloadHasher.allowSubtle = false;
|
|
205
190
|
}
|
|
@@ -212,51 +197,33 @@ var _PayloadHasher = class _PayloadHasher extends ObjectWrapper {
|
|
|
212
197
|
this.wasmSupport.allowWasm = false;
|
|
213
198
|
}
|
|
214
199
|
}
|
|
215
|
-
|
|
200
|
+
throw new Error("No wasm hashing available");
|
|
216
201
|
}
|
|
217
202
|
static hashFields(obj) {
|
|
218
203
|
return sortFields(removeEmptyFields(omitBy(obj, omitByPredicate("_"))));
|
|
219
204
|
}
|
|
220
205
|
/**
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
206
|
+
* Creates an array of payload/hash tuples based on the payloads passed in
|
|
207
|
+
* @param objs Any array of payloads
|
|
208
|
+
* @returns An array of payload/hash tuples
|
|
209
|
+
*/
|
|
225
210
|
static async hashPairs(objs) {
|
|
226
|
-
return await Promise.all(objs.map(async (obj) => [
|
|
227
|
-
obj,
|
|
228
|
-
await _PayloadHasher.hash(obj)
|
|
229
|
-
]));
|
|
211
|
+
return await Promise.all(objs.map(async (obj) => [obj, await _PayloadHasher.hash(obj)]));
|
|
230
212
|
}
|
|
231
213
|
/**
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
static hashSync(obj) {
|
|
237
|
-
return asHash(shajs("sha256").update(this.stringifyHashFields(obj)).digest().toString("hex"), true);
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Creates an array of payload hashes based on the payloads passed in
|
|
241
|
-
* @param objs Any array of payloads
|
|
242
|
-
* @returns An array of payload hashes
|
|
243
|
-
*/
|
|
214
|
+
* Creates an array of payload hashes based on the payloads passed in
|
|
215
|
+
* @param objs Any array of payloads
|
|
216
|
+
* @returns An array of payload hashes
|
|
217
|
+
*/
|
|
244
218
|
static async hashes(objs) {
|
|
245
219
|
return objs ? await Promise.all(objs.map((obj) => this.hash(obj))) : void 0;
|
|
246
220
|
}
|
|
247
|
-
static async jsHash(data) {
|
|
248
|
-
if (_PayloadHasher.warnIfUsingJsHash) {
|
|
249
|
-
console.warn("Using jsHash [No subtle or wasm?]");
|
|
250
|
-
}
|
|
251
|
-
const pool = this.jsHashPool;
|
|
252
|
-
return pool === null ? asHash(shajs("sha256").update(data).digest().toString("hex"), true) : await pool.queue(async (thread) => await thread.hash(data));
|
|
253
|
-
}
|
|
254
221
|
/**
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
222
|
+
* Returns a clone of the payload that is JSON safe
|
|
223
|
+
* @param obj A payload
|
|
224
|
+
* @param meta Keeps underscore (meta) fields if set to true
|
|
225
|
+
* @returns Returns a clone of the payload that is JSON safe
|
|
226
|
+
*/
|
|
260
227
|
static json(payload, meta = false) {
|
|
261
228
|
return sortFields(removeEmptyFields(meta ? payload : omitBy(payload, omitByPredicate("_"))));
|
|
262
229
|
}
|
|
@@ -278,64 +245,33 @@ var _PayloadHasher = class _PayloadHasher extends ObjectWrapper {
|
|
|
278
245
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
279
246
|
static createWorkerPool(url, func, size = 8) {
|
|
280
247
|
if (url) console.debug(`createWorkerPool: ${url}`);
|
|
281
|
-
const createFunc =
|
|
248
|
+
const createFunc = () => spawn(this.createWorker(url, func));
|
|
282
249
|
return Pool(createFunc, size);
|
|
283
250
|
}
|
|
284
251
|
async hash() {
|
|
285
252
|
return await _PayloadHasher.hash(this.obj);
|
|
286
253
|
}
|
|
287
|
-
hashSync() {
|
|
288
|
-
return _PayloadHasher.hashSync(this.obj);
|
|
289
|
-
}
|
|
290
254
|
/**
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
255
|
+
* Returns a clone of the payload that is JSON safe
|
|
256
|
+
* @param meta Keeps underscore (meta) fields if set to true
|
|
257
|
+
* @returns Returns a clone of the payload that is JSON safe
|
|
258
|
+
*/
|
|
295
259
|
json(meta = false) {
|
|
296
260
|
return _PayloadHasher.json(this.obj, meta);
|
|
297
261
|
}
|
|
298
262
|
};
|
|
299
|
-
__name(_PayloadHasher, "PayloadHasher");
|
|
300
|
-
__publicField(_PayloadHasher, "allowHashPooling", true);
|
|
301
|
-
__publicField(_PayloadHasher, "allowSubtle", true);
|
|
302
|
-
__publicField(_PayloadHasher, "createBrowserWorker");
|
|
303
|
-
__publicField(_PayloadHasher, "createNodeWorker");
|
|
304
|
-
__publicField(_PayloadHasher, "initialized", (() => {
|
|
305
|
-
globalThis.xyo = globalThis.xyo ?? {};
|
|
306
|
-
if (globalThis.xyo.hashing) {
|
|
307
|
-
console.warn("Two static instances of PayloadHasher detected");
|
|
308
|
-
}
|
|
309
|
-
globalThis.xyo === globalThis.xyo;
|
|
310
|
-
})());
|
|
311
|
-
__publicField(_PayloadHasher, "jsHashWorkerUrl");
|
|
312
|
-
__publicField(_PayloadHasher, "subtleHashWorkerUrl");
|
|
313
|
-
__publicField(_PayloadHasher, "warnIfUsingJsHash", true);
|
|
314
|
-
__publicField(_PayloadHasher, "wasmHashWorkerUrl");
|
|
315
|
-
__publicField(_PayloadHasher, "wasmInitialized", wasmSupportStatic.initialize());
|
|
316
|
-
__publicField(_PayloadHasher, "wasmSupport", wasmSupportStatic);
|
|
317
|
-
// These get set to null if they fail to create and then we just don't use workers - needed for storybook
|
|
318
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
319
|
-
__publicField(_PayloadHasher, "_jsHashPool");
|
|
320
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
321
|
-
__publicField(_PayloadHasher, "_subtleHashPool");
|
|
322
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
323
|
-
__publicField(_PayloadHasher, "_wasmHashPool");
|
|
324
|
-
var PayloadHasher = _PayloadHasher;
|
|
325
263
|
|
|
326
264
|
// src/NodePayloadHasher.ts
|
|
327
265
|
PayloadHasher.createNodeWorker = createNodeWorker;
|
|
328
|
-
var
|
|
266
|
+
var NodePayloadHasher = class extends PayloadHasher {
|
|
267
|
+
static createNodeWorker = createNodeWorker;
|
|
329
268
|
};
|
|
330
|
-
__name(_NodePayloadHasher, "NodePayloadHasher");
|
|
331
|
-
__publicField(_NodePayloadHasher, "createNodeWorker", createNodeWorker);
|
|
332
|
-
var NodePayloadHasher = _NodePayloadHasher;
|
|
333
269
|
|
|
334
270
|
// src/removeFields.ts
|
|
335
271
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
336
272
|
import { mapValues, merge, omitBy as omitBy2, pickBy } from "@xylabs/lodash";
|
|
337
273
|
import { isObject as isObject2 } from "@xylabs/object";
|
|
338
|
-
var deepBy =
|
|
274
|
+
var deepBy = (obj, predicate, func) => {
|
|
339
275
|
if (Array.isArray(obj)) {
|
|
340
276
|
return obj;
|
|
341
277
|
}
|
|
@@ -345,19 +281,27 @@ var deepBy = /* @__PURE__ */ __name((obj, predicate, func) => {
|
|
|
345
281
|
const pickedNonObjects = omitBy2(nonObjects, predicate);
|
|
346
282
|
const processedObjects = mapValues(pickedObjects, (obj2) => deepBy(obj2, predicate, func));
|
|
347
283
|
return merge({}, pickedNonObjects, processedObjects);
|
|
348
|
-
}
|
|
349
|
-
var deepOmitPrefixedFields =
|
|
350
|
-
return deepBy(
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
284
|
+
};
|
|
285
|
+
var deepOmitPrefixedFields = (obj, prefix) => {
|
|
286
|
+
return deepBy(
|
|
287
|
+
obj,
|
|
288
|
+
(_, key) => {
|
|
289
|
+
assertEx2(typeof key === "string", () => `Invalid key type [${key}, ${typeof key}]`);
|
|
290
|
+
return key.startsWith(prefix);
|
|
291
|
+
},
|
|
292
|
+
omitBy2
|
|
293
|
+
);
|
|
294
|
+
};
|
|
295
|
+
var deepPickUnderscoreFields = (obj) => {
|
|
296
|
+
return deepBy(
|
|
297
|
+
obj,
|
|
298
|
+
(_, key) => {
|
|
299
|
+
assertEx2(typeof key === "string", () => `Invalid key type [${key}, ${typeof key}]`);
|
|
300
|
+
return key.startsWith("_");
|
|
301
|
+
},
|
|
302
|
+
pickBy
|
|
303
|
+
);
|
|
304
|
+
};
|
|
361
305
|
export {
|
|
362
306
|
NodePayloadHasher as PayloadHasher,
|
|
363
307
|
deepBy,
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hasEmptyFields.ts","../../src/createNodeWorker.ts","../../src/PayloadHasher.ts","../../src/removeEmptyFields.ts","../../src/sortFields.ts","../../src/worker/jsHashNode.ts","../../src/worker/subtleHashNode.ts","../../src/worker/wasmHashNode.ts","../../src/NodePayloadHasher.ts","../../src/removeFields.ts"],"sourcesContent":["import { EmptyObject } from '@xylabs/object'\nimport { typeOf } from '@xylabs/typeof'\n\nexport const hasEmptyFields = <T extends EmptyObject>(obj: T): boolean => {\n if (obj === null || Array.isArray(obj)) return false\n\n if (obj === undefined || Object.keys(obj).length === 0) return true\n\n for (const [value] of Object.values(obj)) {\n if (typeOf(value) === 'object') {\n if (hasEmptyFields(value as Record<string, unknown>)) return true\n } else if (value === undefined) {\n return true\n }\n }\n return false\n}\n","import { Worker } from '@xylabs/threads'\n\nexport const createNodeWorker = (func?: () => unknown) => {\n try {\n const code = func?.toString().slice(6) ?? ''\n const w = new Worker(\n code,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { fromSource: true } as any,\n )\n return w\n } catch {\n return\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { asHash, Hash, hexFromArrayBuffer } from '@xylabs/hex'\nimport { omitBy } from '@xylabs/lodash'\nimport { EmptyObject, ObjectWrapper } from '@xylabs/object'\nimport { subtle } from '@xylabs/platform'\nimport { ModuleThread, Pool, spawn, Worker } from '@xylabs/threads'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { sha256 } from 'hash-wasm'\nimport shajs from 'sha.js'\n\nimport { removeEmptyFields } from './removeEmptyFields.js'\nimport { sortFields } from './sortFields.js'\nimport { jsHashFunc, subtleHashFunc, wasmHashFunc } from './worker/index.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type WorkerFunction = ((...args: any[]) => any) | (() => any)\nexport type WorkerModule<Keys extends string> = {\n [key in Keys]: WorkerFunction\n}\n\nconst wasmSupportStatic = new WasmSupport(['bigInt'])\n\nconst omitByPredicate = (prefix: string) => (_: unknown, key: string) => {\n assertEx(typeof key === 'string', () => `Invalid key type [${key}, ${typeof key}]`)\n return key.startsWith(prefix)\n}\n\nexport class PayloadHasher<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 initialized = (() => {\n globalThis.xyo = globalThis.xyo ?? {}\n if (globalThis.xyo.hashing) {\n console.warn('Two static instances of PayloadHasher detected')\n }\n globalThis.xyo === globalThis.xyo ?? { hashing: PayloadHasher }\n })()\n\n static jsHashWorkerUrl?: URL\n static subtleHashWorkerUrl?: URL\n\n static warnIfUsingJsHash = true\n\n static wasmHashWorkerUrl?: URL\n\n static readonly wasmInitialized = wasmSupportStatic.initialize()\n static readonly wasmSupport = wasmSupportStatic\n\n // These get set to null if they fail to create and then we just don't use workers - needed for storybook\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private static _jsHashPool?: Pool<ModuleThread<WorkerModule<any>>> | null\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 jsHashPool() {\n if (!this.allowHashPooling || this._jsHashPool === null) {\n return null\n }\n try {\n return (this._jsHashPool = this._jsHashPool ?? (this.jsHashWorkerUrl ? this.createWorkerPool(this.jsHashWorkerUrl, jsHashFunc) : null))\n } catch {\n console.warn('Creating js hash worker failed')\n this._jsHashPool = null\n return null\n }\n }\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) {\n if (url) console.debug(`createWorker: ${url}`)\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\n if (PayloadHasher.allowSubtle) {\n try {\n const enc = new TextEncoder()\n const data = enc.encode(stringToHash)\n const hashArray = await this.subtleHash(data)\n return hexFromArrayBuffer(hashArray, { bitLength: 256 })\n } catch {\n PayloadHasher.allowSubtle = false\n }\n }\n\n await this.wasmInitialized\n if (this.wasmSupport.canUseWasm) {\n try {\n return this.wasmHash(stringToHash)\n } catch {\n this.wasmSupport.allowWasm = false\n }\n }\n return await this.jsHash(stringToHash)\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 PayloadHasher.hash(obj)]))\n }\n\n /**\n * Synchronously hashes a payload\n * @param obj A payload\n * @returns The payload hash\n */\n static hashSync<T extends EmptyObject>(obj: T): Hash {\n return asHash(shajs('sha256').update(this.stringifyHashFields(obj)).digest().toString('hex'), true)\n }\n\n /**\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 static async jsHash(data: string) {\n if (PayloadHasher.warnIfUsingJsHash) {\n console.warn('Using jsHash [No subtle or wasm?]')\n }\n const pool = this.jsHashPool\n return pool === null ?\n asHash(shajs('sha256').update(data).digest().toString('hex'), true)\n : await pool.queue(async (thread) => await thread.hash(data))\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): Promise<ArrayBuffer> {\n const pool = this.subtleHashPool\n return pool === null ? await subtle.digest('SHA-256', data) : await pool.queue(async (thread) => await thread.hash(data))\n }\n\n static async wasmHash(data: string) {\n const pool = this.wasmHashPool\n return pool === null ? asHash(await sha256(data), true) : pool.queue(async (thread) => await thread.hash(data))\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}`)\n const createFunc = () => spawn<T>(this.createWorker(url, func))\n return Pool(createFunc, size)\n }\n\n async hash(): Promise<Hash> {\n return await PayloadHasher.hash(this.obj)\n }\n\n hashSync(): Hash {\n return PayloadHasher.hashSync(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 PayloadHasher.json(this.obj, meta)\n }\n}\n","import { AnyObject, EmptyObject } from '@xylabs/object'\nimport { typeOf } from '@xylabs/typeof'\n\nexport const removeEmptyFields = <T extends EmptyObject>(obj: T): T => {\n if (obj === null || Array.isArray(obj)) return obj\n\n const newObject: AnyObject = {}\n 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 { AnyObject, EmptyObject, isObject } from '@xylabs/object'\n\n//if an object, sub-sort\nconst subSort = (value: unknown) => {\n return isObject(value) ? sortFields(value) : value\n}\n\nexport const sortFields = <T extends EmptyObject>(obj: T) => {\n const result: AnyObject = {}\n const keys = Object.keys(obj) as (keyof T)[]\n for (const key of keys.sort()) {\n result[key] = subSort(obj[key])\n }\n return result as T\n}\n","/* eslint-disable @typescript-eslint/no-var-requires */\nexport const jsHashFunc = () => {\n const shajs = require('sha.js')\n const { asHash } = require('@xylabs/hex')\n // eslint-disable-next-line import/no-internal-modules\n const { expose } = require('@xylabs/threads/worker')\n\n expose({\n hash(data: string) {\n return asHash(shajs('sha256').update(data).digest().toString('hex'), true)\n },\n })\n}\n","/* 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('@xylabs/threads/worker')\n\n expose({\n async hash(data: ArrayBuffer) {\n return await subtle.digest('SHA-256', data)\n },\n })\n}\n","/* 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('@xylabs/threads/worker')\n\n expose({\n async hash(data: string) {\n return asHash(await sha256(data), true)\n },\n })\n}\n","import { createNodeWorker } from './createNodeWorker.js'\nimport { PayloadHasher } from './PayloadHasher.js'\n\nPayloadHasher.createNodeWorker = createNodeWorker\n\nexport class NodePayloadHasher extends PayloadHasher {\n static override createNodeWorker = createNodeWorker\n}\n","import { assertEx } from '@xylabs/assert'\nimport { mapValues, merge, omitBy, pickBy } from '@xylabs/lodash'\nimport { EmptyObject, isObject } from '@xylabs/object'\ntype ValueKeyIteratee<T> = (value: T, key: string) => unknown\n\nexport const deepBy = <T extends EmptyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy): T => {\n if (Array.isArray(obj)) {\n return obj\n }\n\n //pick the child objects\n const onlyObjects = pickBy<T>(obj, isObject)\n\n //pick the child non-objects\n const nonObjects = pickBy<T>(obj, (value) => !isObject(value))\n\n const pickedObjects = omitBy(onlyObjects, predicate)\n const pickedNonObjects = omitBy(nonObjects, predicate)\n\n const processedObjects = mapValues(pickedObjects, (obj: T) => deepBy(obj, predicate, func))\n\n return merge({}, pickedNonObjects, processedObjects) as T\n}\n\nexport const deepOmitPrefixedFields = <T extends EmptyObject>(obj: T, prefix: string): T => {\n return deepBy(\n obj,\n (_, key) => {\n assertEx(typeof key === 'string', () => `Invalid key type [${key}, ${typeof key}]`)\n return key.startsWith(prefix)\n },\n omitBy,\n )\n}\n\nexport const deepPickUnderscoreFields = <T extends EmptyObject>(obj: T): T => {\n return deepBy(\n obj,\n (_, key) => {\n assertEx(typeof key === 'string', () => `Invalid key type [${key}, ${typeof key}]`)\n return key.startsWith('_')\n },\n pickBy,\n )\n}\n"],"mappings":";;;;;;;;;;;;AACA,SAASA,cAAc;AAEhB,IAAMC,iBAAiB,wBAAwBC,QAAAA;AACpD,MAAIA,QAAQ,QAAQC,MAAMC,QAAQF,GAAAA,EAAM,QAAO;AAE/C,MAAIA,QAAQG,UAAaC,OAAOC,KAAKL,GAAAA,EAAKM,WAAW,EAAG,QAAO;AAE/D,aAAW,CAACC,KAAAA,KAAUH,OAAOI,OAAOR,GAAAA,GAAM;AACxC,QAAIS,OAAOF,KAAAA,MAAW,UAAU;AAC9B,UAAIR,eAAeQ,KAAAA,EAAmC,QAAO;IAC/D,WAAWA,UAAUJ,QAAW;AAC9B,aAAO;IACT;EACF;AACA,SAAO;AACT,GAb8B;;;ACH9B,SAASO,cAAc;AAEhB,IAAMC,mBAAmB,wBAACC,SAAAA;AAC/B,MAAI;AACF,UAAMC,QAAOD,6BAAME,WAAWC,MAAM,OAAM;AAC1C,UAAMC,IAAI,IAAIC;MACZJ;;MAEA;QAAEK,YAAY;MAAK;IAAA;AAErB,WAAOF;EACT,QAAQ;AACN;EACF;AACF,GAZgC;;;ACFhC,SAASG,gBAAgB;AACzB,SAASC,QAAcC,0BAA0B;AACjD,SAASC,cAAc;AACvB,SAAsBC,qBAAqB;AAC3C,SAASC,cAAc;AACvB,SAAuBC,MAAMC,aAAqB;AAClD,SAASC,mBAAmB;AAC5B,SAASC,cAAc;AACvB,OAAOC,WAAW;;;ACPlB,SAASC,UAAAA,eAAc;AAEhB,IAAMC,oBAAoB,wBAAwBC,QAAAA;AACvD,MAAIA,QAAQ,QAAQC,MAAMC,QAAQF,GAAAA,EAAM,QAAOA;AAE/C,QAAMG,YAAuB,CAAC;AAC9B,aAAW,CAACC,KAAKC,KAAAA,KAAUC,OAAOC,QAAQP,GAAAA,GAAM;AAC9C,QAAIQ,QAAOH,KAAAA,MAAW,UAAU;AAC9BF,gBAAUC,GAAAA,IAAOL,kBAAkBM,KAAAA;IACrC,WAAWA,UAAUI,QAAW;AAC9BN,gBAAUC,GAAAA,IAAOC;IACnB;EACF;AACA,SAAOF;AACT,GAZiC;;;ACHjC,SAAiCO,gBAAgB;AAGjD,IAAMC,UAAU,wBAACC,UAAAA;AACf,SAAOC,SAASD,KAAAA,IAASE,WAAWF,KAAAA,IAASA;AAC/C,GAFgB;AAIT,IAAME,aAAa,wBAAwBC,QAAAA;AAChD,QAAMC,SAAoB,CAAC;AAC3B,QAAMC,OAAOC,OAAOD,KAAKF,GAAAA;AACzB,aAAWI,OAAOF,KAAKG,KAAI,GAAI;AAC7BJ,WAAOG,GAAAA,IAAOR,QAAQI,IAAII,GAAAA,CAAI;EAChC;AACA,SAAOH;AACT,GAP0B;;;ACNnB,IAAMK,aAAa,6BAAA;AACxB,QAAMC,SAAQC,UAAQ,QAAA;AACtB,QAAM,EAAEC,QAAAA,QAAM,IAAKD,UAAQ,aAAA;AAE3B,QAAM,EAAEE,OAAM,IAAKF,UAAQ,wBAAA;AAE3BE,SAAO;IACLC,KAAKC,MAAY;AACf,aAAOH,QAAOF,OAAM,QAAA,EAAUM,OAAOD,IAAAA,EAAME,OAAM,EAAGC,SAAS,KAAA,GAAQ,IAAA;IACvE;EACF,CAAA;AACF,GAX0B;;;ACAnB,IAAMC,iBAAiB,6BAAA;AAC5B,QAAM,EAAEC,QAAAA,QAAM,IAAKC,UAAQ,kBAAA;AAE3B,QAAM,EAAEC,OAAM,IAAKD,UAAQ,wBAAA;AAE3BC,SAAO;IACL,MAAMC,KAAKC,MAAiB;AAC1B,aAAO,MAAMJ,QAAOK,OAAO,WAAWD,IAAAA;IACxC;EACF,CAAA;AACF,GAV8B;;;ACAvB,IAAME,eAAe,6BAAA;AAC1B,QAAM,EAAEC,QAAAA,QAAM,IAAKC,UAAQ,WAAA;AAC3B,QAAM,EAAEC,QAAAA,QAAM,IAAKD,UAAQ,aAAA;AAE3B,QAAM,EAAEE,OAAM,IAAKF,UAAQ,wBAAA;AAE3BE,SAAO;IACL,MAAMC,KAAKC,MAAY;AACrB,aAAOH,QAAO,MAAMF,QAAOK,IAAAA,GAAO,IAAA;IACpC;EACF,CAAA;AACF,GAX4B;;;ALmB5B,IAAMC,oBAAoB,IAAIC,YAAY;EAAC;CAAS;AAEpD,IAAMC,kBAAkB,wBAACC,WAAmB,CAACC,GAAYC,QAAAA;AACvDC,WAAS,OAAOD,QAAQ,UAAU,MAAM,qBAAqBA,GAAAA,KAAQ,OAAOA,GAAAA,GAAM;AAClF,SAAOA,IAAIE,WAAWJ,MAAAA;AACxB,GAHwB;AAKjB,IAAMK,iBAAN,MAAMA,uBAA2DC,cAAAA;EAiCtE,WAAmBC,aAAa;AAC9B,QAAI,CAAC,KAAKC,oBAAoB,KAAKC,gBAAgB,MAAM;AACvD,aAAO;IACT;AACA,QAAI;AACF,aAAQ,KAAKA,cAAc,KAAKA,gBAAgB,KAAKC,kBAAkB,KAAKC,iBAAiB,KAAKD,iBAAiBE,UAAAA,IAAc;IACnI,QAAQ;AACNC,cAAQC,KAAK,gCAAA;AACb,WAAKL,cAAc;AACnB,aAAO;IACT;EACF;EAEA,WAAmBM,iBAAiB;AAClC,QAAI,CAAC,KAAKP,oBAAoB,KAAKQ,oBAAoB,MAAM;AAC3D,aAAO;IACT;AACA,QAAI;AACF,aAAQ,KAAKA,kBACX,KAAKA,oBAAoB,KAAKC,sBAAsB,KAAKN,iBAAiB,KAAKM,qBAAqBC,cAAAA,IAAkB;IAC1H,QAAQ;AACNL,cAAQC,KAAK,oCAAA;AACb,WAAKE,kBAAkB;AACvB,aAAO;IACT;EACF;EAEA,WAAmBG,eAAe;AAChC,QAAI,CAAC,KAAKX,oBAAoB,KAAKY,kBAAkB,MAAM;AACzD,aAAO;IACT;AACA,QAAI;AACF,aAAQ,KAAKA,gBACX,KAAKA,kBAAkB,KAAKC,oBAAoB,KAAKV,iBAAiB,KAAKU,mBAAmBC,YAAAA,IAAgB;IAClH,QAAQ;AACNT,cAAQC,KAAK,kCAAA;AACb,WAAKM,gBAAgB;AACrB,aAAO;IACT;EACF;EAEA,OAAOG,aAAaC,KAAWC,MAAsB;AArGvD;AAsGI,QAAID,IAAKX,SAAQa,MAAM,iBAAiBF,GAAAA,EAAK;AAC7C,WAAOrB,WAAS,UAAKwB,wBAAL,8BAA2BH,WAAQ,UAAKI,qBAAL,8BAAwBH,QAAO,MAAM,yBAAA;EAC1F;EAEA,aAAaI,oBAA2CC,OAAY,CAAA,GAAIC,MAAmC;AA1G7G;AA2GI,UAAMC,SAASC,MAAMC,QAAQH,IAAAA,IAAQA,OAAO;MAACA;;AAC7C,YAAQ,YAAM,KAAKI,UAAUL,IAAAA,GAAOM,OAAO,CAAC,CAACnC,GAAGoC,OAAAA,MAAa,CAACL,OAAOM,SAASD,OAAAA,CAAAA,MAAtE,mBAAiFE,IAAI,CAACC,SAASA,KAAK,CAAA;EAC9G;EAEA,aAAaC,oBAA2CX,OAAY,CAAA,GAAIC,MAAmC;AA/G7G;AAgHI,UAAMC,SAASC,MAAMC,QAAQH,IAAAA,IAAQA,OAAO;MAACA;;AAC7C,YAAQ,YAAM,KAAKI,UAAUL,IAAAA,GAAOM,OAAO,CAAC,CAACnC,GAAGoC,OAAAA,MAAaL,OAAOM,SAASD,OAAAA,CAAAA,MAArE,mBAAgFE,IAAI,CAACC,SAASA,KAAK,CAAA;EAC7G;EAEA,aAAaE,WAAkCZ,OAAY,CAAA,GAAIC,MAAoC;AApHrG;AAqHI,YAAQ,YAAM,KAAKI,UAAUL,IAAAA,GAAOa,KAAK,CAAC,CAAC1C,GAAGoC,OAAAA,MAAaA,YAAYN,IAAAA,MAA/D,mBAAuE;EACjF;;;;;;EAOA,aAAaA,KAA4Ba,KAAuB;AAC9D,UAAMC,eAAe,KAAKC,oBAAoBF,GAAAA;AAE9C,QAAIvC,eAAc0C,aAAa;AAC7B,UAAI;AACF,cAAMC,MAAM,IAAIC,YAAAA;AAChB,cAAMC,OAAOF,IAAIG,OAAON,YAAAA;AACxB,cAAMO,YAAY,MAAM,KAAKC,WAAWH,IAAAA;AACxC,eAAOI,mBAAmBF,WAAW;UAAEG,WAAW;QAAI,CAAA;MACxD,QAAQ;AACNlD,uBAAc0C,cAAc;MAC9B;IACF;AAEA,UAAM,KAAKS;AACX,QAAI,KAAKC,YAAYC,YAAY;AAC/B,UAAI;AACF,eAAO,KAAKC,SAASd,YAAAA;MACvB,QAAQ;AACN,aAAKY,YAAYG,YAAY;MAC/B;IACF;AACA,WAAO,MAAM,KAAKC,OAAOhB,YAAAA;EAC3B;EAEA,OAAOiB,WAAkClB,KAAW;AAClD,WAAOmB,WAAWC,kBAAkBC,OAAOrB,KAAK7C,gBAAgB,GAAA,CAAA,CAAA,CAAA;EAClE;;;;;;EAOA,aAAaoC,UAAiCL,MAAiC;AAC7E,WAAO,MAAMoC,QAAQC,IAAIrC,KAAKS,IAAwB,OAAOK,QAAQ;MAACA;MAAK,MAAMvC,eAAc0B,KAAKa,GAAAA;KAAK,CAAA;EAC3G;;;;;;EAOA,OAAOwB,SAAgCxB,KAAc;AACnD,WAAOyB,OAAOC,MAAM,QAAA,EAAUC,OAAO,KAAKzB,oBAAoBF,GAAAA,CAAAA,EAAM4B,OAAM,EAAGC,SAAS,KAAA,GAAQ,IAAA;EAChG;;;;;;EAOA,aAAazC,OAA8BF,MAAyC;AAClF,WAAOA,OAAO,MAAMoC,QAAQC,IAAIrC,KAAKS,IAAI,CAACK,QAAQ,KAAKb,KAAKa,GAAAA,CAAAA,CAAAA,IAAS8B;EACvE;EAEA,aAAab,OAAOX,MAAc;AAChC,QAAI7C,eAAcsE,mBAAmB;AACnC9D,cAAQC,KAAK,mCAAA;IACf;AACA,UAAM8D,OAAO,KAAKrE;AAClB,WAAOqE,SAAS,OACZP,OAAOC,MAAM,QAAA,EAAUC,OAAOrB,IAAAA,EAAMsB,OAAM,EAAGC,SAAS,KAAA,GAAQ,IAAA,IAC9D,MAAMG,KAAKC,MAAM,OAAOC,WAAW,MAAMA,OAAO/C,KAAKmB,IAAAA,CAAAA;EAC3D;;;;;;;EAQA,OAAO6B,KAA4BC,SAAYC,OAAO,OAAU;AAC9D,WAAOlB,WAAWC,kBAAkBiB,OAAOD,UAAUf,OAAOe,SAASjF,gBAAgB,GAAA,CAAA,CAAA,CAAA;EACvF;;EAGA,OAAOmF,YAAmCF,SAAYC,OAAO,OAAU;AACrE,WAAO,KAAKF,KAAKC,SAASC,IAAAA;EAC5B;EAEA,OAAOnC,oBAA2CF,KAAQ;AACxD,WAAOuC,KAAKC,UAAU,KAAKtB,WAAWlB,GAAAA,CAAAA;EACxC;EAEA,aAAaS,WAAWH,MAAwC;AAC9D,UAAM0B,OAAO,KAAK7D;AAClB,WAAO6D,SAAS,OAAO,MAAMS,OAAOb,OAAO,WAAWtB,IAAAA,IAAQ,MAAM0B,KAAKC,MAAM,OAAOC,WAAW,MAAMA,OAAO/C,KAAKmB,IAAAA,CAAAA;EACrH;EAEA,aAAaS,SAAST,MAAc;AAClC,UAAM0B,OAAO,KAAKzD;AAClB,WAAOyD,SAAS,OAAOP,OAAO,MAAMiB,OAAOpC,IAAAA,GAAO,IAAA,IAAQ0B,KAAKC,MAAM,OAAOC,WAAW,MAAMA,OAAO/C,KAAKmB,IAAAA,CAAAA;EAC3G;;EAGA,OAAevC,iBAA8Ca,KAAWC,MAAsB8D,OAAO,GAAG;AACtG,QAAI/D,IAAKX,SAAQa,MAAM,qBAAqBF,GAAAA,EAAK;AACjD,UAAMgE,aAAa,6BAAMC,MAAS,KAAKlE,aAAaC,KAAKC,IAAAA,CAAAA,GAAtC;AACnB,WAAOiE,KAAKF,YAAYD,IAAAA;EAC1B;EAEA,MAAMxD,OAAsB;AAC1B,WAAO,MAAM1B,eAAc0B,KAAK,KAAKa,GAAG;EAC1C;EAEAwB,WAAiB;AACf,WAAO/D,eAAc+D,SAAS,KAAKxB,GAAG;EACxC;;;;;;EAOAmC,KAAKE,OAAO,OAAU;AACpB,WAAO5E,eAAc0E,KAAK,KAAKnC,KAAKqC,IAAAA;EACtC;AACF;AAxNwE3E;AACtE,cADWD,gBACJG,oBAAmB;AAC1B,cAFWH,gBAEJ0C,eAAc;AACrB,cAHW1C,gBAGJsB;AACP,cAJWtB,gBAIJuB;AAEP,cANWvB,gBAMJsF,gBAAe,MAAA;AACpBC,aAAWC,MAAMD,WAAWC,OAAO,CAAC;AACpC,MAAID,WAAWC,IAAIC,SAAS;AAC1BjF,YAAQC,KAAK,gDAAA;EACf;AACA8E,EAAAA,WAAWC,QAAQD,WAAWC;AAChC,GAAA;AAEA,cAdWxF,gBAcJK;AACP,cAfWL,gBAeJY;AAEP,cAjBWZ,gBAiBJsE,qBAAoB;AAE3B,cAnBWtE,gBAmBJgB;AAEP,cArBWhB,gBAqBKmD,mBAAkB3D,kBAAkBkG,WAAU;AAC9D,cAtBW1F,gBAsBKoD,eAAc5D;;;AAI9B,cA1BWQ,gBA0BII;;AAGf,cA7BWJ,gBA6BIW;;AAEf,cA/BWX,gBA+BIe;AA/BV,IAAMf,gBAAN;;;AMxBP2F,cAAcC,mBAAmBA;AAE1B,IAAMC,qBAAN,MAAMA,2BAA0BF,cAAAA;AAEvC;AAFuCA;AACrC,cADWE,oBACKD,oBAAmBA;AAD9B,IAAMC,oBAAN;;;ACLP,SAASC,YAAAA,iBAAgB;AACzB,SAASC,WAAWC,OAAOC,UAAAA,SAAQC,cAAc;AACjD,SAAsBC,YAAAA,iBAAgB;AAG/B,IAAMC,SAAS,wBAAwBC,KAAQC,WAAgCC,SAAAA;AACpF,MAAIC,MAAMC,QAAQJ,GAAAA,GAAM;AACtB,WAAOA;EACT;AAGA,QAAMK,cAAcC,OAAUN,KAAKO,SAAAA;AAGnC,QAAMC,aAAaF,OAAUN,KAAK,CAACS,UAAU,CAACF,UAASE,KAAAA,CAAAA;AAEvD,QAAMC,gBAAgBC,QAAON,aAAaJ,SAAAA;AAC1C,QAAMW,mBAAmBD,QAAOH,YAAYP,SAAAA;AAE5C,QAAMY,mBAAmBC,UAAUJ,eAAe,CAACV,SAAWD,OAAOC,MAAKC,WAAWC,IAAAA,CAAAA;AAErF,SAAOa,MAAM,CAAC,GAAGH,kBAAkBC,gBAAAA;AACrC,GAjBsB;AAmBf,IAAMG,yBAAyB,wBAAwBhB,KAAQiB,WAAAA;AACpE,SAAOlB,OACLC,KACA,CAACkB,GAAGC,QAAAA;AACFC,IAAAA,UAAS,OAAOD,QAAQ,UAAU,MAAM,qBAAqBA,GAAAA,KAAQ,OAAOA,GAAAA,GAAM;AAClF,WAAOA,IAAIE,WAAWJ,MAAAA;EACxB,GACAN,OAAAA;AAEJ,GATsC;AAW/B,IAAMW,2BAA2B,wBAAwBtB,QAAAA;AAC9D,SAAOD,OACLC,KACA,CAACkB,GAAGC,QAAAA;AACFC,IAAAA,UAAS,OAAOD,QAAQ,UAAU,MAAM,qBAAqBA,GAAAA,KAAQ,OAAOA,GAAAA,GAAM;AAClF,WAAOA,IAAIE,WAAW,GAAA;EACxB,GACAf,MAAAA;AAEJ,GATwC;","names":["typeOf","hasEmptyFields","obj","Array","isArray","undefined","Object","keys","length","value","values","typeOf","Worker","createNodeWorker","func","code","toString","slice","w","Worker","fromSource","assertEx","asHash","hexFromArrayBuffer","omitBy","ObjectWrapper","subtle","Pool","spawn","WasmSupport","sha256","shajs","typeOf","removeEmptyFields","obj","Array","isArray","newObject","key","value","Object","entries","typeOf","undefined","isObject","subSort","value","isObject","sortFields","obj","result","keys","Object","key","sort","jsHashFunc","shajs","require","asHash","expose","hash","data","update","digest","toString","subtleHashFunc","subtle","require","expose","hash","data","digest","wasmHashFunc","sha256","require","asHash","expose","hash","data","wasmSupportStatic","WasmSupport","omitByPredicate","prefix","_","key","assertEx","startsWith","PayloadHasher","ObjectWrapper","jsHashPool","allowHashPooling","_jsHashPool","jsHashWorkerUrl","createWorkerPool","jsHashFunc","console","warn","subtleHashPool","_subtleHashPool","subtleHashWorkerUrl","subtleHashFunc","wasmHashPool","_wasmHashPool","wasmHashWorkerUrl","wasmHashFunc","createWorker","url","func","debug","createBrowserWorker","createNodeWorker","filterExcludeByHash","objs","hash","hashes","Array","isArray","hashPairs","filter","objHash","includes","map","pair","filterIncludeByHash","findByHash","find","obj","stringToHash","stringifyHashFields","allowSubtle","enc","TextEncoder","data","encode","hashArray","subtleHash","hexFromArrayBuffer","bitLength","wasmInitialized","wasmSupport","canUseWasm","wasmHash","allowWasm","jsHash","hashFields","sortFields","removeEmptyFields","omitBy","Promise","all","hashSync","asHash","shajs","update","digest","toString","undefined","warnIfUsingJsHash","pool","queue","thread","json","payload","meta","jsonPayload","JSON","stringify","subtle","sha256","size","createFunc","spawn","Pool","initialized","globalThis","xyo","hashing","initialize","PayloadHasher","createNodeWorker","NodePayloadHasher","assertEx","mapValues","merge","omitBy","pickBy","isObject","deepBy","obj","predicate","func","Array","isArray","onlyObjects","pickBy","isObject","nonObjects","value","pickedObjects","omitBy","pickedNonObjects","processedObjects","mapValues","merge","deepOmitPrefixedFields","prefix","_","key","assertEx","startsWith","deepPickUnderscoreFields"]}
|
|
1
|
+
{"version":3,"sources":["../../src/hasEmptyFields.ts","../../src/createNodeWorker.ts","../../src/PayloadHasher.ts","../../src/removeEmptyFields.ts","../../src/sortFields.ts","../../src/worker/subtleHashNode.ts","../../src/worker/wasmHashNode.ts","../../src/NodePayloadHasher.ts","../../src/removeFields.ts"],"sourcesContent":["import { EmptyObject } from '@xylabs/object'\nimport { typeOf } from '@xylabs/typeof'\n\nexport const hasEmptyFields = <T extends EmptyObject>(obj: T): boolean => {\n if (obj === null || Array.isArray(obj)) return false\n\n if (obj === undefined || Object.keys(obj).length === 0) return true\n\n for (const [value] of Object.values(obj)) {\n if (typeOf(value) === 'object') {\n if (hasEmptyFields(value as Record<string, unknown>)) return true\n } else if (value === undefined) {\n return true\n }\n }\n return false\n}\n","import { Worker } from '@xylabs/threads'\n\nexport const createNodeWorker = (func?: () => unknown) => {\n try {\n const code = func?.toString().slice(6) ?? ''\n return new Worker(\n code,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { fromSource: true } as any,\n )\n } catch {\n return\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { asHash, Hash, hexFromArrayBuffer } from '@xylabs/hex'\nimport { omitBy } from '@xylabs/lodash'\nimport { EmptyObject, ObjectWrapper } from '@xylabs/object'\nimport { subtle } from '@xylabs/platform'\nimport { ModuleThread, Pool, spawn, Worker } from '@xylabs/threads'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { sha256 } from 'hash-wasm'\n\nimport { removeEmptyFields } from './removeEmptyFields.js'\nimport { sortFields } from './sortFields.js'\nimport { subtleHashFunc, wasmHashFunc } from './worker/index.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type WorkerFunction = ((...args: any[]) => any) | (() => any)\nexport type WorkerModule<Keys extends string> = {\n [key in Keys]: WorkerFunction\n}\n\nconst wasmSupportStatic = new WasmSupport(['bigInt'])\n\nconst omitByPredicate = (prefix: string) => (_: unknown, key: string) => {\n assertEx(typeof key === 'string', () => `Invalid key type [${key}, ${typeof key}]`)\n return key.startsWith(prefix)\n}\n\nexport class PayloadHasher<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 initialized = (() => {\n globalThis.xyo = globalThis.xyo ?? {}\n if (globalThis.xyo.hashing) {\n console.warn('Two static instances of PayloadHasher detected')\n }\n })()\n\n static subtleHashWorkerUrl?: URL\n\n static warnIfUsingJsHash = true\n\n static wasmHashWorkerUrl?: URL\n\n static readonly wasmInitialized = wasmSupportStatic.initialize()\n static readonly wasmSupport = wasmSupportStatic\n\n // These get set to null if they fail to create and then we just don't use workers - needed for storybook\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private static _jsHashPool?: Pool<ModuleThread<WorkerModule<any>>> | null\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) {\n if (url) console.debug(`createWorker: ${url}`)\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\n if (PayloadHasher.allowSubtle) {\n try {\n const enc = new TextEncoder()\n const data = enc.encode(stringToHash)\n const hashArray = await this.subtleHash(data)\n return hexFromArrayBuffer(hashArray, { bitLength: 256 })\n } catch {\n PayloadHasher.allowSubtle = false\n }\n }\n\n await this.wasmInitialized\n if (this.wasmSupport.canUseWasm) {\n try {\n return this.wasmHash(stringToHash)\n } catch {\n this.wasmSupport.allowWasm = false\n }\n }\n throw new Error('No wasm hashing available')\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 PayloadHasher.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): Promise<ArrayBuffer> {\n const pool = this.subtleHashPool\n return pool === null ? await subtle.digest('SHA-256', data) : await pool.queue(async (thread) => await thread.hash(data))\n }\n\n static async wasmHash(data: string) {\n const pool = this.wasmHashPool\n return pool === null ? asHash(await sha256(data), true) : pool.queue(async (thread) => await thread.hash(data))\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}`)\n const createFunc = () => spawn<T>(this.createWorker(url, func))\n return Pool(createFunc, size)\n }\n\n async hash(): Promise<Hash> {\n return await PayloadHasher.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 PayloadHasher.json(this.obj, meta)\n }\n}\n","import { AnyObject, EmptyObject } from '@xylabs/object'\nimport { typeOf } from '@xylabs/typeof'\n\nexport const removeEmptyFields = <T extends EmptyObject>(obj: T): T => {\n if (obj === null) return obj\n\n if (Array.isArray(obj)) {\n return obj.map((value) => (typeof value === 'object' ? removeEmptyFields(value) : 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 { AnyObject, EmptyObject, isObject } from '@xylabs/object'\n\n//if an object, sub-sort\nconst subSort = (value: unknown) => {\n return isObject(value) ? sortFields(value) : value\n}\n\nexport const sortFields = <T extends EmptyObject>(obj: T) => {\n const result: AnyObject = {}\n const keys = Object.keys(obj) as (keyof T)[]\n for (const key of keys.sort()) {\n result[key] = subSort(obj[key])\n }\n return result as T\n}\n","/* eslint-disable @typescript-eslint/no-var-requires */\nexport const subtleHashFunc = () => {\n const { subtle } = require('@xylabs/platform')\n const { expose } = require('@xylabs/threads/worker')\n\n expose({\n async hash(data: ArrayBuffer) {\n return await subtle.digest('SHA-256', data)\n },\n })\n}\n","/* eslint-disable @typescript-eslint/no-var-requires */\nexport const wasmHashFunc = () => {\n const { sha256 } = require('hash-wasm')\n const { asHash } = require('@xylabs/hex')\n\n const { expose } = require('@xylabs/threads/worker')\n\n expose({\n async hash(data: string) {\n return asHash(await sha256(data), true)\n },\n })\n}\n","import { createNodeWorker } from './createNodeWorker.js'\nimport { PayloadHasher } from './PayloadHasher.js'\n\nPayloadHasher.createNodeWorker = createNodeWorker\n\nexport class NodePayloadHasher extends PayloadHasher {\n static override createNodeWorker = createNodeWorker\n}\n","import { assertEx } from '@xylabs/assert'\nimport { mapValues, merge, omitBy, pickBy } from '@xylabs/lodash'\nimport { EmptyObject, isObject } from '@xylabs/object'\ntype ValueKeyIteratee<T> = (value: T, key: string) => unknown\n\nexport const deepBy = <T extends EmptyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy): T => {\n if (Array.isArray(obj)) {\n return obj\n }\n\n //pick the child objects\n const onlyObjects = pickBy<T>(obj, isObject)\n\n //pick the child non-objects\n const nonObjects = pickBy<T>(obj, (value) => !isObject(value))\n\n const pickedObjects = omitBy(onlyObjects, predicate)\n const pickedNonObjects = omitBy(nonObjects, predicate)\n\n const processedObjects = mapValues(pickedObjects, (obj: T) => deepBy(obj, predicate, func))\n\n return merge({}, pickedNonObjects, processedObjects) as T\n}\n\nexport const deepOmitPrefixedFields = <T extends EmptyObject>(obj: T, prefix: string): T => {\n return deepBy(\n obj,\n (_, key) => {\n assertEx(typeof key === 'string', () => `Invalid key type [${key}, ${typeof key}]`)\n return key.startsWith(prefix)\n },\n omitBy,\n )\n}\n\nexport const deepPickUnderscoreFields = <T extends EmptyObject>(obj: T): T => {\n return deepBy(\n obj,\n (_, key) => {\n assertEx(typeof key === 'string', () => `Invalid key type [${key}, ${typeof key}]`)\n return key.startsWith('_')\n },\n pickBy,\n )\n}\n"],"mappings":"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","names":["typeOf","subtle","sha256","asHash","assertEx","omitBy","isObject","obj"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGvD,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,
|
|
1
|
+
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGvD,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,CAgBjE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGvD,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,
|
|
1
|
+
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGvD,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,CAgBjE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGvD,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,
|
|
1
|
+
{"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGvD,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,CAgBjE,CAAA"}
|
|
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
6
|
var __export = (target, all) => {
|
|
8
7
|
for (var name in all)
|
|
9
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -21,26 +20,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
20
|
// src/worker/index.ts
|
|
22
21
|
var worker_exports = {};
|
|
23
22
|
__export(worker_exports, {
|
|
24
|
-
jsHashFunc: () => jsHashFunc,
|
|
25
23
|
subtleHashFunc: () => subtleHashFunc,
|
|
26
24
|
wasmHashFunc: () => wasmHashFunc
|
|
27
25
|
});
|
|
28
26
|
module.exports = __toCommonJS(worker_exports);
|
|
29
27
|
|
|
30
|
-
// src/worker/jsHashNode.ts
|
|
31
|
-
var jsHashFunc = /* @__PURE__ */ __name(() => {
|
|
32
|
-
const shajs = require("sha.js");
|
|
33
|
-
const { asHash } = require("@xylabs/hex");
|
|
34
|
-
const { expose } = require("@xylabs/threads/worker");
|
|
35
|
-
expose({
|
|
36
|
-
hash(data) {
|
|
37
|
-
return asHash(shajs("sha256").update(data).digest().toString("hex"), true);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}, "jsHashFunc");
|
|
41
|
-
|
|
42
28
|
// src/worker/subtleHashNode.ts
|
|
43
|
-
var subtleHashFunc =
|
|
29
|
+
var subtleHashFunc = () => {
|
|
44
30
|
const { subtle } = require("@xylabs/platform");
|
|
45
31
|
const { expose } = require("@xylabs/threads/worker");
|
|
46
32
|
expose({
|
|
@@ -48,10 +34,10 @@ var subtleHashFunc = /* @__PURE__ */ __name(() => {
|
|
|
48
34
|
return await subtle.digest("SHA-256", data);
|
|
49
35
|
}
|
|
50
36
|
});
|
|
51
|
-
}
|
|
37
|
+
};
|
|
52
38
|
|
|
53
39
|
// src/worker/wasmHashNode.ts
|
|
54
|
-
var wasmHashFunc =
|
|
40
|
+
var wasmHashFunc = () => {
|
|
55
41
|
const { sha256 } = require("hash-wasm");
|
|
56
42
|
const { asHash } = require("@xylabs/hex");
|
|
57
43
|
const { expose } = require("@xylabs/threads/worker");
|
|
@@ -60,10 +46,9 @@ var wasmHashFunc = /* @__PURE__ */ __name(() => {
|
|
|
60
46
|
return asHash(await sha256(data), true);
|
|
61
47
|
}
|
|
62
48
|
});
|
|
63
|
-
}
|
|
49
|
+
};
|
|
64
50
|
// Annotate the CommonJS export names for ESM import in node:
|
|
65
51
|
0 && (module.exports = {
|
|
66
|
-
jsHashFunc,
|
|
67
52
|
subtleHashFunc,
|
|
68
53
|
wasmHashFunc
|
|
69
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/worker/index.ts","../../../src/worker/
|
|
1
|
+
{"version":3,"sources":["../../../src/worker/index.ts","../../../src/worker/subtleHashNode.ts","../../../src/worker/wasmHashNode.ts"],"sourcesContent":["export * from './subtleHashNode.js'\nexport * from './wasmHashNode.js'\n","/* eslint-disable @typescript-eslint/no-var-requires */\nexport const subtleHashFunc = () => {\n const { subtle } = require('@xylabs/platform')\n const { expose } = require('@xylabs/threads/worker')\n\n expose({\n async hash(data: ArrayBuffer) {\n return await subtle.digest('SHA-256', data)\n },\n })\n}\n","/* eslint-disable @typescript-eslint/no-var-requires */\nexport const wasmHashFunc = () => {\n const { sha256 } = require('hash-wasm')\n const { asHash } = require('@xylabs/hex')\n\n const { expose } = require('@xylabs/threads/worker')\n\n expose({\n async hash(data: string) {\n return asHash(await sha256(data), true)\n },\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCO,IAAM,iBAAiB,MAAM;AAClC,QAAM,EAAE,OAAO,IAAI,QAAQ,kBAAkB;AAC7C,QAAM,EAAE,OAAO,IAAI,QAAQ,wBAAwB;AAEnD,SAAO;AAAA,IACL,MAAM,KAAK,MAAmB;AAC5B,aAAO,MAAM,OAAO,OAAO,WAAW,IAAI;AAAA,IAC5C;AAAA,EACF,CAAC;AACH;;;ACTO,IAAM,eAAe,MAAM;AAChC,QAAM,EAAE,OAAO,IAAI,QAAQ,WAAW;AACtC,QAAM,EAAE,OAAO,IAAI,QAAQ,aAAa;AAExC,QAAM,EAAE,OAAO,IAAI,QAAQ,wBAAwB;AAEnD,SAAO;AAAA,IACL,MAAM,KAAK,MAAc;AACvB,aAAO,OAAO,MAAM,OAAO,IAAI,GAAG,IAAI;AAAA,IACxC;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
|