@xyo-network/hash 2.90.11 → 2.90.13

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