@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.
Files changed (194) hide show
  1. package/dist/browser/BrowserPayloadHasher.d.cts +0 -1
  2. package/dist/browser/BrowserPayloadHasher.d.cts.map +1 -1
  3. package/dist/browser/BrowserPayloadHasher.d.mts +0 -1
  4. package/dist/browser/BrowserPayloadHasher.d.mts.map +1 -1
  5. package/dist/browser/BrowserPayloadHasher.d.ts +0 -1
  6. package/dist/browser/BrowserPayloadHasher.d.ts.map +1 -1
  7. package/dist/browser/PayloadHasher.d.cts +0 -5
  8. package/dist/browser/PayloadHasher.d.cts.map +1 -1
  9. package/dist/browser/PayloadHasher.d.mts +0 -5
  10. package/dist/browser/PayloadHasher.d.mts.map +1 -1
  11. package/dist/browser/PayloadHasher.d.ts +0 -5
  12. package/dist/browser/PayloadHasher.d.ts.map +1 -1
  13. package/dist/browser/createNodeWorker.d.cts.map +1 -1
  14. package/dist/browser/createNodeWorker.d.mts.map +1 -1
  15. package/dist/browser/createNodeWorker.d.ts.map +1 -1
  16. package/dist/browser/index-browser.cjs +72 -144
  17. package/dist/browser/index-browser.cjs.map +1 -1
  18. package/dist/browser/index-browser.js +72 -135
  19. package/dist/browser/index-browser.js.map +1 -1
  20. package/dist/browser/removeEmptyFields.d.cts.map +1 -1
  21. package/dist/browser/removeEmptyFields.d.mts.map +1 -1
  22. package/dist/browser/removeEmptyFields.d.ts.map +1 -1
  23. package/dist/browser/worker/index.cjs +4 -18
  24. package/dist/browser/worker/index.cjs.map +1 -1
  25. package/dist/browser/worker/index.d.cts +0 -1
  26. package/dist/browser/worker/index.d.cts.map +1 -1
  27. package/dist/browser/worker/index.d.mts +0 -1
  28. package/dist/browser/worker/index.d.mts.map +1 -1
  29. package/dist/browser/worker/index.d.ts +0 -1
  30. package/dist/browser/worker/index.d.ts.map +1 -1
  31. package/dist/browser/worker/index.js +4 -19
  32. package/dist/browser/worker/index.js.map +1 -1
  33. package/dist/browser/worker/subtleHash-bundle.js +92 -91
  34. package/dist/browser/worker/subtleHash.cjs.map +1 -1
  35. package/dist/browser/worker/subtleHash.js.map +1 -1
  36. package/dist/browser/worker/subtleHashNode.cjs +2 -3
  37. package/dist/browser/worker/subtleHashNode.cjs.map +1 -1
  38. package/dist/browser/worker/subtleHashNode.d.cts.map +1 -1
  39. package/dist/browser/worker/subtleHashNode.d.mts.map +1 -1
  40. package/dist/browser/worker/subtleHashNode.d.ts.map +1 -1
  41. package/dist/browser/worker/subtleHashNode.js +2 -4
  42. package/dist/browser/worker/subtleHashNode.js.map +1 -1
  43. package/dist/browser/worker/wasmHash-bundle.js +94 -93
  44. package/dist/browser/worker/wasmHash.cjs.map +1 -1
  45. package/dist/browser/worker/wasmHash.js.map +1 -1
  46. package/dist/browser/worker/wasmHashNode.cjs +2 -3
  47. package/dist/browser/worker/wasmHashNode.cjs.map +1 -1
  48. package/dist/browser/worker/wasmHashNode.js +2 -4
  49. package/dist/browser/worker/wasmHashNode.js.map +1 -1
  50. package/dist/neutral/BrowserPayloadHasher.d.cts +0 -1
  51. package/dist/neutral/BrowserPayloadHasher.d.cts.map +1 -1
  52. package/dist/neutral/BrowserPayloadHasher.d.mts +0 -1
  53. package/dist/neutral/BrowserPayloadHasher.d.mts.map +1 -1
  54. package/dist/neutral/BrowserPayloadHasher.d.ts +0 -1
  55. package/dist/neutral/BrowserPayloadHasher.d.ts.map +1 -1
  56. package/dist/neutral/PayloadHasher.d.cts +0 -5
  57. package/dist/neutral/PayloadHasher.d.cts.map +1 -1
  58. package/dist/neutral/PayloadHasher.d.mts +0 -5
  59. package/dist/neutral/PayloadHasher.d.mts.map +1 -1
  60. package/dist/neutral/PayloadHasher.d.ts +0 -5
  61. package/dist/neutral/PayloadHasher.d.ts.map +1 -1
  62. package/dist/neutral/createNodeWorker.d.cts.map +1 -1
  63. package/dist/neutral/createNodeWorker.d.mts.map +1 -1
  64. package/dist/neutral/createNodeWorker.d.ts.map +1 -1
  65. package/dist/neutral/index.cjs +72 -137
  66. package/dist/neutral/index.cjs.map +1 -1
  67. package/dist/neutral/index.js +72 -128
  68. package/dist/neutral/index.js.map +1 -1
  69. package/dist/neutral/removeEmptyFields.d.cts.map +1 -1
  70. package/dist/neutral/removeEmptyFields.d.mts.map +1 -1
  71. package/dist/neutral/removeEmptyFields.d.ts.map +1 -1
  72. package/dist/neutral/worker/index.d.cts +0 -1
  73. package/dist/neutral/worker/index.d.cts.map +1 -1
  74. package/dist/neutral/worker/index.d.mts +0 -1
  75. package/dist/neutral/worker/index.d.mts.map +1 -1
  76. package/dist/neutral/worker/index.d.ts +0 -1
  77. package/dist/neutral/worker/index.d.ts.map +1 -1
  78. package/dist/neutral/worker/subtleHashNode.d.cts.map +1 -1
  79. package/dist/neutral/worker/subtleHashNode.d.mts.map +1 -1
  80. package/dist/neutral/worker/subtleHashNode.d.ts.map +1 -1
  81. package/dist/node/BrowserPayloadHasher.d.cts +0 -1
  82. package/dist/node/BrowserPayloadHasher.d.cts.map +1 -1
  83. package/dist/node/BrowserPayloadHasher.d.mts +0 -1
  84. package/dist/node/BrowserPayloadHasher.d.mts.map +1 -1
  85. package/dist/node/BrowserPayloadHasher.d.ts +0 -1
  86. package/dist/node/BrowserPayloadHasher.d.ts.map +1 -1
  87. package/dist/node/PayloadHasher.d.cts +0 -5
  88. package/dist/node/PayloadHasher.d.cts.map +1 -1
  89. package/dist/node/PayloadHasher.d.mts +0 -5
  90. package/dist/node/PayloadHasher.d.mts.map +1 -1
  91. package/dist/node/PayloadHasher.d.ts +0 -5
  92. package/dist/node/PayloadHasher.d.ts.map +1 -1
  93. package/dist/node/createNodeWorker.d.cts.map +1 -1
  94. package/dist/node/createNodeWorker.d.mts.map +1 -1
  95. package/dist/node/createNodeWorker.d.ts.map +1 -1
  96. package/dist/node/index.cjs +96 -161
  97. package/dist/node/index.cjs.map +1 -1
  98. package/dist/node/index.js +96 -152
  99. package/dist/node/index.js.map +1 -1
  100. package/dist/node/removeEmptyFields.d.cts.map +1 -1
  101. package/dist/node/removeEmptyFields.d.mts.map +1 -1
  102. package/dist/node/removeEmptyFields.d.ts.map +1 -1
  103. package/dist/node/worker/index.cjs +4 -19
  104. package/dist/node/worker/index.cjs.map +1 -1
  105. package/dist/node/worker/index.d.cts +0 -1
  106. package/dist/node/worker/index.d.cts.map +1 -1
  107. package/dist/node/worker/index.d.mts +0 -1
  108. package/dist/node/worker/index.d.mts.map +1 -1
  109. package/dist/node/worker/index.d.ts +0 -1
  110. package/dist/node/worker/index.d.ts.map +1 -1
  111. package/dist/node/worker/index.js +4 -19
  112. package/dist/node/worker/index.js.map +1 -1
  113. package/dist/node/worker/subtleHash.cjs.map +1 -1
  114. package/dist/node/worker/subtleHash.js.map +1 -1
  115. package/dist/node/worker/subtleHashNode.cjs +2 -3
  116. package/dist/node/worker/subtleHashNode.cjs.map +1 -1
  117. package/dist/node/worker/subtleHashNode.d.cts.map +1 -1
  118. package/dist/node/worker/subtleHashNode.d.mts.map +1 -1
  119. package/dist/node/worker/subtleHashNode.d.ts.map +1 -1
  120. package/dist/node/worker/subtleHashNode.js +2 -4
  121. package/dist/node/worker/subtleHashNode.js.map +1 -1
  122. package/dist/node/worker/wasmHash.cjs.map +1 -1
  123. package/dist/node/worker/wasmHash.js.map +1 -1
  124. package/dist/node/worker/wasmHashNode.cjs +2 -3
  125. package/dist/node/worker/wasmHashNode.cjs.map +1 -1
  126. package/dist/node/worker/wasmHashNode.js +2 -4
  127. package/dist/node/worker/wasmHashNode.js.map +1 -1
  128. package/package.json +14 -17
  129. package/src/BrowserPayloadHasher.ts +0 -7
  130. package/src/PayloadHasher.ts +2 -41
  131. package/src/createNodeWorker.ts +1 -2
  132. package/src/globals.d.ts +0 -1
  133. package/src/removeEmptyFields.ts +5 -1
  134. package/src/worker/index.ts +0 -1
  135. package/src/worker/subtleHash.ts +0 -1
  136. package/src/worker/subtleHashNode.ts +0 -1
  137. package/src/worker/wasmHash.ts +0 -1
  138. package/src/worker/wasmHashNode.ts +1 -1
  139. package/xy.config.ts +0 -1
  140. package/dist/browser/worker/jsHash-bundle.js +0 -5641
  141. package/dist/browser/worker/jsHash.cjs +0 -34
  142. package/dist/browser/worker/jsHash.cjs.map +0 -1
  143. package/dist/browser/worker/jsHash.d.cts +0 -2
  144. package/dist/browser/worker/jsHash.d.cts.map +0 -1
  145. package/dist/browser/worker/jsHash.d.mts +0 -2
  146. package/dist/browser/worker/jsHash.d.mts.map +0 -1
  147. package/dist/browser/worker/jsHash.d.ts +0 -2
  148. package/dist/browser/worker/jsHash.d.ts.map +0 -1
  149. package/dist/browser/worker/jsHash.js +0 -10
  150. package/dist/browser/worker/jsHash.js.map +0 -1
  151. package/dist/browser/worker/jsHashNode.cjs +0 -37
  152. package/dist/browser/worker/jsHashNode.cjs.map +0 -1
  153. package/dist/browser/worker/jsHashNode.d.cts +0 -2
  154. package/dist/browser/worker/jsHashNode.d.cts.map +0 -1
  155. package/dist/browser/worker/jsHashNode.d.mts +0 -2
  156. package/dist/browser/worker/jsHashNode.d.mts.map +0 -1
  157. package/dist/browser/worker/jsHashNode.d.ts +0 -2
  158. package/dist/browser/worker/jsHashNode.d.ts.map +0 -1
  159. package/dist/browser/worker/jsHashNode.js +0 -24
  160. package/dist/browser/worker/jsHashNode.js.map +0 -1
  161. package/dist/neutral/worker/jsHash.d.cts +0 -2
  162. package/dist/neutral/worker/jsHash.d.cts.map +0 -1
  163. package/dist/neutral/worker/jsHash.d.mts +0 -2
  164. package/dist/neutral/worker/jsHash.d.mts.map +0 -1
  165. package/dist/neutral/worker/jsHash.d.ts +0 -2
  166. package/dist/neutral/worker/jsHash.d.ts.map +0 -1
  167. package/dist/neutral/worker/jsHashNode.d.cts +0 -2
  168. package/dist/neutral/worker/jsHashNode.d.cts.map +0 -1
  169. package/dist/neutral/worker/jsHashNode.d.mts +0 -2
  170. package/dist/neutral/worker/jsHashNode.d.mts.map +0 -1
  171. package/dist/neutral/worker/jsHashNode.d.ts +0 -2
  172. package/dist/neutral/worker/jsHashNode.d.ts.map +0 -1
  173. package/dist/node/worker/jsHash.cjs +0 -34
  174. package/dist/node/worker/jsHash.cjs.map +0 -1
  175. package/dist/node/worker/jsHash.d.cts +0 -2
  176. package/dist/node/worker/jsHash.d.cts.map +0 -1
  177. package/dist/node/worker/jsHash.d.mts +0 -2
  178. package/dist/node/worker/jsHash.d.mts.map +0 -1
  179. package/dist/node/worker/jsHash.d.ts +0 -2
  180. package/dist/node/worker/jsHash.d.ts.map +0 -1
  181. package/dist/node/worker/jsHash.js +0 -10
  182. package/dist/node/worker/jsHash.js.map +0 -1
  183. package/dist/node/worker/jsHashNode.cjs +0 -41
  184. package/dist/node/worker/jsHashNode.cjs.map +0 -1
  185. package/dist/node/worker/jsHashNode.d.cts +0 -2
  186. package/dist/node/worker/jsHashNode.d.cts.map +0 -1
  187. package/dist/node/worker/jsHashNode.d.mts +0 -2
  188. package/dist/node/worker/jsHashNode.d.mts.map +0 -1
  189. package/dist/node/worker/jsHashNode.d.ts +0 -2
  190. package/dist/node/worker/jsHashNode.d.ts.map +0 -1
  191. package/dist/node/worker/jsHashNode.js +0 -24
  192. package/dist/node/worker/jsHashNode.js.map +0 -1
  193. package/src/worker/jsHash.ts +0 -10
  194. package/src/worker/jsHashNode.ts +0 -13
@@ -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 = /* @__PURE__ */ __name((obj) => {
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
- }, "hasEmptyFields");
21
+ };
26
22
 
27
23
  // src/createNodeWorker.ts
28
24
  import { Worker } from "@xylabs/threads";
29
- var createNodeWorker = /* @__PURE__ */ __name((func) => {
25
+ var createNodeWorker = (func) => {
30
26
  try {
31
27
  const code = (func == null ? void 0 : func.toString().slice(6)) ?? "";
32
- const w = new Worker(
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
- }, "createNodeWorker");
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 = /* @__PURE__ */ __name((obj) => {
59
- if (obj === null || Array.isArray(obj)) return obj;
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
- }, "removeEmptyFields");
64
+ };
70
65
 
71
66
  // src/sortFields.ts
72
67
  import { isObject } from "@xylabs/object";
73
- var subSort = /* @__PURE__ */ __name((value) => {
68
+ var subSort = (value) => {
74
69
  return isObject(value) ? sortFields(value) : value;
75
- }, "subSort");
76
- var sortFields = /* @__PURE__ */ __name((obj) => {
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
- }, "sortFields");
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 = /* @__PURE__ */ __name(() => {
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
- }, "subtleHashFunc");
89
+ };
107
90
 
108
91
  // src/worker/wasmHashNode.ts
109
- var wasmHashFunc = /* @__PURE__ */ __name(() => {
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
- }, "wasmHashFunc");
101
+ };
119
102
 
120
103
  // src/PayloadHasher.ts
121
- var wasmSupportStatic = new WasmSupport([
122
- "bigInt"
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
- }, "omitByPredicate");
128
- var _PayloadHasher = class _PayloadHasher extends ObjectWrapper {
129
- static get jsHashPool() {
130
- if (!this.allowHashPooling || this._jsHashPool === null) {
131
- return null;
132
- }
133
- try {
134
- return this._jsHashPool = this._jsHashPool ?? (this.jsHashWorkerUrl ? this.createWorkerPool(this.jsHashWorkerUrl, jsHashFunc) : null);
135
- } catch {
136
- console.warn("Creating js hash worker failed");
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
- * Asynchronously hashes a payload
190
- * @param obj A payload
191
- * @returns The payload hash
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
- return await this.jsHash(stringToHash);
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
- * Creates an array of payload/hash tuples based on the payloads passed in
222
- * @param objs Any array of payloads
223
- * @returns An array of payload/hash tuples
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
- * Synchronously hashes a payload
233
- * @param obj A payload
234
- * @returns The payload hash
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
- * Returns a clone of the payload that is JSON safe
256
- * @param obj A payload
257
- * @param meta Keeps underscore (meta) fields if set to true
258
- * @returns Returns a clone of the payload that is JSON safe
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 = /* @__PURE__ */ __name(() => spawn(this.createWorker(url, func)), "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
- * Returns a clone of the payload that is JSON safe
292
- * @param meta Keeps underscore (meta) fields if set to true
293
- * @returns Returns a clone of the payload that is JSON safe
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 _NodePayloadHasher = class _NodePayloadHasher extends PayloadHasher {
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 = /* @__PURE__ */ __name((obj, predicate, func) => {
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
- }, "deepBy");
349
- var deepOmitPrefixedFields = /* @__PURE__ */ __name((obj, prefix) => {
350
- return deepBy(obj, (_, key) => {
351
- assertEx2(typeof key === "string", () => `Invalid key type [${key}, ${typeof key}]`);
352
- return key.startsWith(prefix);
353
- }, omitBy2);
354
- }, "deepOmitPrefixedFields");
355
- var deepPickUnderscoreFields = /* @__PURE__ */ __name((obj) => {
356
- return deepBy(obj, (_, key) => {
357
- assertEx2(typeof key === "string", () => `Invalid key type [${key}, ${typeof key}]`);
358
- return key.startsWith("_");
359
- }, pickBy);
360
- }, "deepPickUnderscoreFields");
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,
@@ -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":"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","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,CAYjE,CAAA"}
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,CAYjE,CAAA"}
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,CAYjE,CAAA"}
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 = /* @__PURE__ */ __name(() => {
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
- }, "subtleHashFunc");
37
+ };
52
38
 
53
39
  // src/worker/wasmHashNode.ts
54
- var wasmHashFunc = /* @__PURE__ */ __name(() => {
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
- }, "wasmHashFunc");
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/jsHashNode.ts","../../../src/worker/subtleHashNode.ts","../../../src/worker/wasmHashNode.ts"],"sourcesContent":["export * from './jsHashNode.js'\nexport * from './subtleHashNode.js'\nexport * from './wasmHashNode.js'\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACCO,IAAMA,aAAa,6BAAA;AACxB,QAAMC,QAAQC,QAAQ,QAAA;AACtB,QAAM,EAAEC,OAAM,IAAKD,QAAQ,aAAA;AAE3B,QAAM,EAAEE,OAAM,IAAKF,QAAQ,wBAAA;AAE3BE,SAAO;IACLC,KAAKC,MAAY;AACf,aAAOH,OAAOF,MAAM,QAAA,EAAUM,OAAOD,IAAAA,EAAME,OAAM,EAAGC,SAAS,KAAA,GAAQ,IAAA;IACvE;EACF,CAAA;AACF,GAX0B;;;ACAnB,IAAMC,iBAAiB,6BAAA;AAC5B,QAAM,EAAEC,OAAM,IAAKC,QAAQ,kBAAA;AAE3B,QAAM,EAAEC,OAAM,IAAKD,QAAQ,wBAAA;AAE3BC,SAAO;IACL,MAAMC,KAAKC,MAAiB;AAC1B,aAAO,MAAMJ,OAAOK,OAAO,WAAWD,IAAAA;IACxC;EACF,CAAA;AACF,GAV8B;;;ACAvB,IAAME,eAAe,6BAAA;AAC1B,QAAM,EAAEC,OAAM,IAAKC,QAAQ,WAAA;AAC3B,QAAM,EAAEC,OAAM,IAAKD,QAAQ,aAAA;AAE3B,QAAM,EAAEE,OAAM,IAAKF,QAAQ,wBAAA;AAE3BE,SAAO;IACL,MAAMC,KAAKC,MAAY;AACrB,aAAOH,OAAO,MAAMF,OAAOK,IAAAA,GAAO,IAAA;IACpC;EACF,CAAA;AACF,GAX4B;","names":["jsHashFunc","shajs","require","asHash","expose","hash","data","update","digest","toString","subtleHashFunc","subtle","require","expose","hash","data","digest","wasmHashFunc","sha256","require","asHash","expose","hash","data"]}
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,4 +1,3 @@
1
- export * from './jsHashNode.js';
2
1
  export * from './subtleHashNode.js';
3
2
  export * from './wasmHashNode.js';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
@@ -1,4 +1,3 @@
1
- export * from './jsHashNode.js';
2
1
  export * from './subtleHashNode.js';
3
2
  export * from './wasmHashNode.js';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
@@ -1,4 +1,3 @@
1
- export * from './jsHashNode.js';
2
1
  export * from './subtleHashNode.js';
3
2
  export * from './wasmHashNode.js';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}