@xyo-network/hash 2.106.0 → 2.107.0

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 (231) hide show
  1. package/dist/browser/BrowserPayloadHasher.d.cts +2 -2
  2. package/dist/browser/BrowserPayloadHasher.d.cts.map +1 -1
  3. package/dist/browser/BrowserPayloadHasher.d.mts +2 -2
  4. package/dist/browser/BrowserPayloadHasher.d.mts.map +1 -1
  5. package/dist/browser/BrowserPayloadHasher.d.ts +2 -2
  6. package/dist/browser/BrowserPayloadHasher.d.ts.map +1 -1
  7. package/dist/browser/NodePayloadHasher.d.cts +1 -1
  8. package/dist/browser/NodePayloadHasher.d.cts.map +1 -1
  9. package/dist/browser/NodePayloadHasher.d.mts +1 -1
  10. package/dist/browser/NodePayloadHasher.d.mts.map +1 -1
  11. package/dist/browser/NodePayloadHasher.d.ts +1 -1
  12. package/dist/browser/NodePayloadHasher.d.ts.map +1 -1
  13. package/dist/browser/PayloadHasher.d.cts +0 -32
  14. package/dist/browser/PayloadHasher.d.cts.map +1 -1
  15. package/dist/browser/PayloadHasher.d.mts +0 -32
  16. package/dist/browser/PayloadHasher.d.mts.map +1 -1
  17. package/dist/browser/PayloadHasher.d.ts +0 -32
  18. package/dist/browser/PayloadHasher.d.ts.map +1 -1
  19. package/dist/browser/hasEmptyFields.d.cts +2 -1
  20. package/dist/browser/hasEmptyFields.d.cts.map +1 -1
  21. package/dist/browser/hasEmptyFields.d.mts +2 -1
  22. package/dist/browser/hasEmptyFields.d.mts.map +1 -1
  23. package/dist/browser/hasEmptyFields.d.ts +2 -1
  24. package/dist/browser/hasEmptyFields.d.ts.map +1 -1
  25. package/dist/browser/index-browser.cjs +1 -403
  26. package/dist/browser/index-browser.cjs.map +1 -1
  27. package/dist/browser/index-browser.js +1 -377
  28. package/dist/browser/index-browser.js.map +1 -1
  29. package/dist/browser/removeEmptyFields.d.cts +2 -1
  30. package/dist/browser/removeEmptyFields.d.cts.map +1 -1
  31. package/dist/browser/removeEmptyFields.d.mts +2 -1
  32. package/dist/browser/removeEmptyFields.d.mts.map +1 -1
  33. package/dist/browser/removeEmptyFields.d.ts +2 -1
  34. package/dist/browser/removeEmptyFields.d.ts.map +1 -1
  35. package/dist/browser/removeFields.d.cts +4 -3
  36. package/dist/browser/removeFields.d.cts.map +1 -1
  37. package/dist/browser/removeFields.d.mts +4 -3
  38. package/dist/browser/removeFields.d.mts.map +1 -1
  39. package/dist/browser/removeFields.d.ts +4 -3
  40. package/dist/browser/removeFields.d.ts.map +1 -1
  41. package/dist/browser/sortFields.d.cts +2 -1
  42. package/dist/browser/sortFields.d.cts.map +1 -1
  43. package/dist/browser/sortFields.d.mts +2 -1
  44. package/dist/browser/sortFields.d.mts.map +1 -1
  45. package/dist/browser/sortFields.d.ts +2 -1
  46. package/dist/browser/sortFields.d.ts.map +1 -1
  47. package/dist/browser/worker/index.cjs +1 -63
  48. package/dist/browser/worker/index.cjs.map +1 -1
  49. package/dist/browser/worker/index.js +1 -48
  50. package/dist/browser/worker/index.js.map +1 -1
  51. package/dist/browser/worker/jsHash.cjs +1 -33
  52. package/dist/browser/worker/jsHash.cjs.map +1 -1
  53. package/dist/browser/worker/jsHash.js +1 -9
  54. package/dist/browser/worker/jsHash.js.map +1 -1
  55. package/dist/browser/worker/jsHashNode.cjs +1 -36
  56. package/dist/browser/worker/jsHashNode.cjs.map +1 -1
  57. package/dist/browser/worker/jsHashNode.d.cts.map +1 -1
  58. package/dist/browser/worker/jsHashNode.d.mts.map +1 -1
  59. package/dist/browser/worker/jsHashNode.d.ts.map +1 -1
  60. package/dist/browser/worker/jsHashNode.js +1 -23
  61. package/dist/browser/worker/jsHashNode.js.map +1 -1
  62. package/dist/browser/worker/subtleHash.cjs +1 -10
  63. package/dist/browser/worker/subtleHash.cjs.map +1 -1
  64. package/dist/browser/worker/subtleHash.js +1 -8
  65. package/dist/browser/worker/subtleHash.js.map +1 -1
  66. package/dist/browser/worker/subtleHashNode.cjs +1 -35
  67. package/dist/browser/worker/subtleHashNode.cjs.map +1 -1
  68. package/dist/browser/worker/subtleHashNode.d.cts.map +1 -1
  69. package/dist/browser/worker/subtleHashNode.d.mts.map +1 -1
  70. package/dist/browser/worker/subtleHashNode.d.ts.map +1 -1
  71. package/dist/browser/worker/subtleHashNode.js +1 -22
  72. package/dist/browser/worker/subtleHashNode.js.map +1 -1
  73. package/dist/browser/worker/wasmHash.cjs +1 -11
  74. package/dist/browser/worker/wasmHash.cjs.map +1 -1
  75. package/dist/browser/worker/wasmHash.js +1 -9
  76. package/dist/browser/worker/wasmHash.js.map +1 -1
  77. package/dist/browser/worker/wasmHashNode.cjs +1 -36
  78. package/dist/browser/worker/wasmHashNode.cjs.map +1 -1
  79. package/dist/browser/worker/wasmHashNode.d.cts.map +1 -1
  80. package/dist/browser/worker/wasmHashNode.d.mts.map +1 -1
  81. package/dist/browser/worker/wasmHashNode.d.ts.map +1 -1
  82. package/dist/browser/worker/wasmHashNode.js +1 -23
  83. package/dist/browser/worker/wasmHashNode.js.map +1 -1
  84. package/dist/neutral/BrowserPayloadHasher.d.cts +2 -2
  85. package/dist/neutral/BrowserPayloadHasher.d.cts.map +1 -1
  86. package/dist/neutral/BrowserPayloadHasher.d.mts +2 -2
  87. package/dist/neutral/BrowserPayloadHasher.d.mts.map +1 -1
  88. package/dist/neutral/BrowserPayloadHasher.d.ts +2 -2
  89. package/dist/neutral/BrowserPayloadHasher.d.ts.map +1 -1
  90. package/dist/neutral/NodePayloadHasher.d.cts +1 -1
  91. package/dist/neutral/NodePayloadHasher.d.cts.map +1 -1
  92. package/dist/neutral/NodePayloadHasher.d.mts +1 -1
  93. package/dist/neutral/NodePayloadHasher.d.mts.map +1 -1
  94. package/dist/neutral/NodePayloadHasher.d.ts +1 -1
  95. package/dist/neutral/NodePayloadHasher.d.ts.map +1 -1
  96. package/dist/neutral/PayloadHasher.d.cts +0 -32
  97. package/dist/neutral/PayloadHasher.d.cts.map +1 -1
  98. package/dist/neutral/PayloadHasher.d.mts +0 -32
  99. package/dist/neutral/PayloadHasher.d.mts.map +1 -1
  100. package/dist/neutral/PayloadHasher.d.ts +0 -32
  101. package/dist/neutral/PayloadHasher.d.ts.map +1 -1
  102. package/dist/neutral/hasEmptyFields.d.cts +2 -1
  103. package/dist/neutral/hasEmptyFields.d.cts.map +1 -1
  104. package/dist/neutral/hasEmptyFields.d.mts +2 -1
  105. package/dist/neutral/hasEmptyFields.d.mts.map +1 -1
  106. package/dist/neutral/hasEmptyFields.d.ts +2 -1
  107. package/dist/neutral/hasEmptyFields.d.ts.map +1 -1
  108. package/dist/neutral/index.cjs +1 -385
  109. package/dist/neutral/index.cjs.map +1 -1
  110. package/dist/neutral/index.js +1 -360
  111. package/dist/neutral/index.js.map +1 -1
  112. package/dist/neutral/removeEmptyFields.d.cts +2 -1
  113. package/dist/neutral/removeEmptyFields.d.cts.map +1 -1
  114. package/dist/neutral/removeEmptyFields.d.mts +2 -1
  115. package/dist/neutral/removeEmptyFields.d.mts.map +1 -1
  116. package/dist/neutral/removeEmptyFields.d.ts +2 -1
  117. package/dist/neutral/removeEmptyFields.d.ts.map +1 -1
  118. package/dist/neutral/removeFields.d.cts +4 -3
  119. package/dist/neutral/removeFields.d.cts.map +1 -1
  120. package/dist/neutral/removeFields.d.mts +4 -3
  121. package/dist/neutral/removeFields.d.mts.map +1 -1
  122. package/dist/neutral/removeFields.d.ts +4 -3
  123. package/dist/neutral/removeFields.d.ts.map +1 -1
  124. package/dist/neutral/sortFields.d.cts +2 -1
  125. package/dist/neutral/sortFields.d.cts.map +1 -1
  126. package/dist/neutral/sortFields.d.mts +2 -1
  127. package/dist/neutral/sortFields.d.mts.map +1 -1
  128. package/dist/neutral/sortFields.d.ts +2 -1
  129. package/dist/neutral/sortFields.d.ts.map +1 -1
  130. package/dist/neutral/worker/jsHashNode.d.cts.map +1 -1
  131. package/dist/neutral/worker/jsHashNode.d.mts.map +1 -1
  132. package/dist/neutral/worker/jsHashNode.d.ts.map +1 -1
  133. package/dist/neutral/worker/subtleHashNode.d.cts.map +1 -1
  134. package/dist/neutral/worker/subtleHashNode.d.mts.map +1 -1
  135. package/dist/neutral/worker/subtleHashNode.d.ts.map +1 -1
  136. package/dist/neutral/worker/wasmHashNode.d.cts.map +1 -1
  137. package/dist/neutral/worker/wasmHashNode.d.mts.map +1 -1
  138. package/dist/neutral/worker/wasmHashNode.d.ts.map +1 -1
  139. package/dist/node/BrowserPayloadHasher.d.cts +2 -2
  140. package/dist/node/BrowserPayloadHasher.d.cts.map +1 -1
  141. package/dist/node/BrowserPayloadHasher.d.mts +2 -2
  142. package/dist/node/BrowserPayloadHasher.d.mts.map +1 -1
  143. package/dist/node/BrowserPayloadHasher.d.ts +2 -2
  144. package/dist/node/BrowserPayloadHasher.d.ts.map +1 -1
  145. package/dist/node/NodePayloadHasher.d.cts +1 -1
  146. package/dist/node/NodePayloadHasher.d.cts.map +1 -1
  147. package/dist/node/NodePayloadHasher.d.mts +1 -1
  148. package/dist/node/NodePayloadHasher.d.mts.map +1 -1
  149. package/dist/node/NodePayloadHasher.d.ts +1 -1
  150. package/dist/node/NodePayloadHasher.d.ts.map +1 -1
  151. package/dist/node/PayloadHasher.d.cts +0 -32
  152. package/dist/node/PayloadHasher.d.cts.map +1 -1
  153. package/dist/node/PayloadHasher.d.mts +0 -32
  154. package/dist/node/PayloadHasher.d.mts.map +1 -1
  155. package/dist/node/PayloadHasher.d.ts +0 -32
  156. package/dist/node/PayloadHasher.d.ts.map +1 -1
  157. package/dist/node/hasEmptyFields.d.cts +2 -1
  158. package/dist/node/hasEmptyFields.d.cts.map +1 -1
  159. package/dist/node/hasEmptyFields.d.mts +2 -1
  160. package/dist/node/hasEmptyFields.d.mts.map +1 -1
  161. package/dist/node/hasEmptyFields.d.ts +2 -1
  162. package/dist/node/hasEmptyFields.d.ts.map +1 -1
  163. package/dist/node/index.cjs +1 -399
  164. package/dist/node/index.cjs.map +1 -1
  165. package/dist/node/index.js +1 -364
  166. package/dist/node/index.js.map +1 -1
  167. package/dist/node/removeEmptyFields.d.cts +2 -1
  168. package/dist/node/removeEmptyFields.d.cts.map +1 -1
  169. package/dist/node/removeEmptyFields.d.mts +2 -1
  170. package/dist/node/removeEmptyFields.d.mts.map +1 -1
  171. package/dist/node/removeEmptyFields.d.ts +2 -1
  172. package/dist/node/removeEmptyFields.d.ts.map +1 -1
  173. package/dist/node/removeFields.d.cts +4 -3
  174. package/dist/node/removeFields.d.cts.map +1 -1
  175. package/dist/node/removeFields.d.mts +4 -3
  176. package/dist/node/removeFields.d.mts.map +1 -1
  177. package/dist/node/removeFields.d.ts +4 -3
  178. package/dist/node/removeFields.d.ts.map +1 -1
  179. package/dist/node/sortFields.d.cts +2 -1
  180. package/dist/node/sortFields.d.cts.map +1 -1
  181. package/dist/node/sortFields.d.mts +2 -1
  182. package/dist/node/sortFields.d.mts.map +1 -1
  183. package/dist/node/sortFields.d.ts +2 -1
  184. package/dist/node/sortFields.d.ts.map +1 -1
  185. package/dist/node/worker/index.cjs +1 -69
  186. package/dist/node/worker/index.cjs.map +1 -1
  187. package/dist/node/worker/index.js +1 -48
  188. package/dist/node/worker/index.js.map +1 -1
  189. package/dist/node/worker/jsHash.cjs +1 -33
  190. package/dist/node/worker/jsHash.cjs.map +1 -1
  191. package/dist/node/worker/jsHash.js +1 -9
  192. package/dist/node/worker/jsHash.js.map +1 -1
  193. package/dist/node/worker/jsHashNode.cjs +1 -40
  194. package/dist/node/worker/jsHashNode.cjs.map +1 -1
  195. package/dist/node/worker/jsHashNode.d.cts.map +1 -1
  196. package/dist/node/worker/jsHashNode.d.mts.map +1 -1
  197. package/dist/node/worker/jsHashNode.d.ts.map +1 -1
  198. package/dist/node/worker/jsHashNode.js +1 -23
  199. package/dist/node/worker/jsHashNode.js.map +1 -1
  200. package/dist/node/worker/subtleHash.cjs +1 -10
  201. package/dist/node/worker/subtleHash.cjs.map +1 -1
  202. package/dist/node/worker/subtleHash.js +1 -8
  203. package/dist/node/worker/subtleHash.js.map +1 -1
  204. package/dist/node/worker/subtleHashNode.cjs +1 -39
  205. package/dist/node/worker/subtleHashNode.cjs.map +1 -1
  206. package/dist/node/worker/subtleHashNode.d.cts.map +1 -1
  207. package/dist/node/worker/subtleHashNode.d.mts.map +1 -1
  208. package/dist/node/worker/subtleHashNode.d.ts.map +1 -1
  209. package/dist/node/worker/subtleHashNode.js +1 -22
  210. package/dist/node/worker/subtleHashNode.js.map +1 -1
  211. package/dist/node/worker/wasmHash.cjs +1 -11
  212. package/dist/node/worker/wasmHash.cjs.map +1 -1
  213. package/dist/node/worker/wasmHash.js +1 -9
  214. package/dist/node/worker/wasmHash.js.map +1 -1
  215. package/dist/node/worker/wasmHashNode.cjs +1 -40
  216. package/dist/node/worker/wasmHashNode.cjs.map +1 -1
  217. package/dist/node/worker/wasmHashNode.d.cts.map +1 -1
  218. package/dist/node/worker/wasmHashNode.d.mts.map +1 -1
  219. package/dist/node/worker/wasmHashNode.d.ts.map +1 -1
  220. package/dist/node/worker/wasmHashNode.js +1 -23
  221. package/dist/node/worker/wasmHashNode.js.map +1 -1
  222. package/package.json +5 -5
  223. package/src/PayloadHasher.ts +9 -4
  224. package/src/globals.d.ts +0 -1
  225. package/src/removeFields.ts +0 -1
  226. package/src/worker/jsHash.ts +0 -1
  227. package/src/worker/jsHashNode.ts +0 -1
  228. package/src/worker/subtleHash.ts +0 -1
  229. package/src/worker/subtleHashNode.ts +0 -1
  230. package/src/worker/wasmHash.ts +0 -1
  231. package/src/worker/wasmHashNode.ts +0 -1
@@ -1,365 +1,2 @@
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
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
5
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
6
- }) : x)(function(x) {
7
- if (typeof require !== "undefined") return require.apply(this, arguments);
8
- throw Error('Dynamic require of "' + x + '" is not supported');
9
- });
10
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
-
12
- // src/hasEmptyFields.ts
13
- import { typeOf } from "@xylabs/typeof";
14
- var hasEmptyFields = /* @__PURE__ */ __name((obj) => {
15
- if (obj === null || Array.isArray(obj)) return false;
16
- if (obj === void 0 || Object.keys(obj).length === 0) return true;
17
- for (const [value] of Object.values(obj)) {
18
- if (typeOf(value) === "object") {
19
- if (hasEmptyFields(value)) return true;
20
- } else if (value === void 0) {
21
- return true;
22
- }
23
- }
24
- return false;
25
- }, "hasEmptyFields");
26
-
27
- // src/createNodeWorker.ts
28
- import { Worker } from "@xylabs/threads";
29
- var createNodeWorker = /* @__PURE__ */ __name((func) => {
30
- try {
31
- const code = (func == null ? void 0 : func.toString().slice(6)) ?? "";
32
- const w = new Worker(
33
- code,
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- {
36
- fromSource: true
37
- }
38
- );
39
- return w;
40
- } catch {
41
- return;
42
- }
43
- }, "createNodeWorker");
44
-
45
- // src/PayloadHasher.ts
46
- import { assertEx as assertEx2 } from "@xylabs/assert";
47
- import { asHash, hexFromArrayBuffer } from "@xylabs/hex";
48
- import { ObjectWrapper } from "@xylabs/object";
49
- import { subtle } from "@xylabs/platform";
50
- import { Pool, spawn } from "@xylabs/threads";
51
- import { WasmSupport } from "@xyo-network/wasm";
52
- import { sha256 } from "hash-wasm";
53
- import shajs from "sha.js";
54
-
55
- // src/removeEmptyFields.ts
56
- import { typeOf as typeOf2 } from "@xylabs/typeof";
57
- var removeEmptyFields = /* @__PURE__ */ __name((obj) => {
58
- if (obj === null || Array.isArray(obj)) return obj;
59
- const newObject = {};
60
- for (const [key, value] of Object.entries(obj)) {
61
- if (typeOf2(value) === "object") {
62
- newObject[key] = removeEmptyFields(value);
63
- } else if (value !== void 0) {
64
- newObject[key] = value;
65
- }
66
- }
67
- return newObject;
68
- }, "removeEmptyFields");
69
-
70
- // src/removeFields.ts
71
- import { assertEx } from "@xylabs/assert";
72
- import { mapValues, merge, omitBy, pickBy } from "@xylabs/lodash";
73
- import { isObject } from "@xylabs/object";
74
- var deepBy = /* @__PURE__ */ __name((obj, predicate, func) => {
75
- if (Array.isArray(obj)) {
76
- return obj;
77
- }
78
- const onlyObjects = pickBy(obj, isObject);
79
- const nonObjects = pickBy(obj, (value) => !isObject(value));
80
- const pickedObjects = omitBy(onlyObjects, predicate);
81
- const pickedNonObjects = omitBy(nonObjects, predicate);
82
- const processedObjects = mapValues(pickedObjects, (obj2) => deepBy(obj2, predicate, func));
83
- return merge({}, pickedNonObjects, processedObjects);
84
- }, "deepBy");
85
- var deepOmitPrefixedFields = /* @__PURE__ */ __name((obj, prefix) => {
86
- return deepBy(obj, (_, key) => {
87
- assertEx(typeof key === "string", () => `Invalid key type [${key}, ${typeof key}]`);
88
- return key.startsWith(prefix);
89
- }, omitBy);
90
- }, "deepOmitPrefixedFields");
91
- var deepPickUnderscoreFields = /* @__PURE__ */ __name((obj) => {
92
- return deepBy(obj, (_, key) => {
93
- assertEx(typeof key === "string", () => `Invalid key type [${key}, ${typeof key}]`);
94
- return key.startsWith("_");
95
- }, pickBy);
96
- }, "deepPickUnderscoreFields");
97
-
98
- // src/sortFields.ts
99
- import { isObject as isObject2 } from "@xylabs/object";
100
- var subSort = /* @__PURE__ */ __name((value) => {
101
- return isObject2(value) ? sortFields(value) : value;
102
- }, "subSort");
103
- var sortFields = /* @__PURE__ */ __name((obj) => {
104
- const result = {};
105
- const keys = Object.keys(obj);
106
- for (const key of keys.sort()) {
107
- result[key] = subSort(obj[key]);
108
- }
109
- return result;
110
- }, "sortFields");
111
-
112
- // src/worker/jsHashNode.ts
113
- var jsHashFunc = /* @__PURE__ */ __name(() => {
114
- const shajs2 = __require("sha.js");
115
- const { asHash: asHash2 } = __require("@xylabs/hex");
116
- const { expose } = __require("@xylabs/threads/worker");
117
- expose({
118
- hash(data) {
119
- return asHash2(shajs2("sha256").update(data).digest().toString("hex"), true);
120
- }
121
- });
122
- }, "jsHashFunc");
123
-
124
- // src/worker/subtleHashNode.ts
125
- var subtleHashFunc = /* @__PURE__ */ __name(() => {
126
- const { subtle: subtle2 } = __require("@xylabs/platform");
127
- const { expose } = __require("@xylabs/threads/worker");
128
- expose({
129
- async hash(data) {
130
- return await subtle2.digest("SHA-256", data);
131
- }
132
- });
133
- }, "subtleHashFunc");
134
-
135
- // src/worker/wasmHashNode.ts
136
- var wasmHashFunc = /* @__PURE__ */ __name(() => {
137
- const { sha256: sha2562 } = __require("hash-wasm");
138
- const { asHash: asHash2 } = __require("@xylabs/hex");
139
- const { expose } = __require("@xylabs/threads/worker");
140
- expose({
141
- async hash(data) {
142
- return asHash2(await sha2562(data), true);
143
- }
144
- });
145
- }, "wasmHashFunc");
146
-
147
- // src/PayloadHasher.ts
148
- var wasmSupportStatic = new WasmSupport([
149
- "bigInt"
150
- ]);
151
- var _PayloadHasher = class _PayloadHasher extends ObjectWrapper {
152
- static get jsHashPool() {
153
- if (!this.allowHashPooling || this._jsHashPool === null) {
154
- return null;
155
- }
156
- try {
157
- return this._jsHashPool = this._jsHashPool ?? (this.jsHashWorkerUrl ? this.createWorkerPool(this.jsHashWorkerUrl, jsHashFunc) : null);
158
- } catch {
159
- console.warn("Creating js hash worker failed");
160
- this._jsHashPool = null;
161
- return null;
162
- }
163
- }
164
- static get subtleHashPool() {
165
- if (!this.allowHashPooling || this._subtleHashPool === null) {
166
- return null;
167
- }
168
- try {
169
- return this._subtleHashPool = this._subtleHashPool ?? (this.subtleHashWorkerUrl ? this.createWorkerPool(this.subtleHashWorkerUrl, subtleHashFunc) : null);
170
- } catch {
171
- console.warn("Creating subtle hash worker failed");
172
- this._subtleHashPool = null;
173
- return null;
174
- }
175
- }
176
- static get wasmHashPool() {
177
- if (!this.allowHashPooling || this._wasmHashPool === null) {
178
- return null;
179
- }
180
- try {
181
- return this._wasmHashPool = this._wasmHashPool ?? (this.wasmHashWorkerUrl ? this.createWorkerPool(this.wasmHashWorkerUrl, wasmHashFunc) : null);
182
- } catch {
183
- console.warn("Creating wasm hash worker failed");
184
- this._wasmHashPool = null;
185
- return null;
186
- }
187
- }
188
- static createWorker(url, func) {
189
- var _a, _b;
190
- if (url) console.debug(`createWorker: ${url}`);
191
- return assertEx2(((_a = this.createBrowserWorker) == null ? void 0 : _a.call(this, url)) ?? ((_b = this.createNodeWorker) == null ? void 0 : _b.call(this, func)), () => "Unable to create worker");
192
- }
193
- static async filterExcludeByHash(objs = [], hash) {
194
- var _a;
195
- const hashes = Array.isArray(hash) ? hash : [
196
- hash
197
- ];
198
- return (_a = (await this.hashPairs(objs)).filter(([_, objHash]) => !hashes.includes(objHash))) == null ? void 0 : _a.map((pair) => pair[0]);
199
- }
200
- static async filterIncludeByHash(objs = [], hash) {
201
- var _a;
202
- const hashes = Array.isArray(hash) ? hash : [
203
- hash
204
- ];
205
- return (_a = (await this.hashPairs(objs)).filter(([_, objHash]) => hashes.includes(objHash))) == null ? void 0 : _a.map((pair) => pair[0]);
206
- }
207
- static async findByHash(objs = [], hash) {
208
- var _a;
209
- return (_a = (await this.hashPairs(objs)).find(([_, objHash]) => objHash === hash)) == null ? void 0 : _a[0];
210
- }
211
- /**
212
- * Asynchronously hashes a payload
213
- * @param obj A payload
214
- * @returns The payload hash
215
- */
216
- static async hash(obj) {
217
- const stringToHash = this.stringifyHashFields(obj);
218
- if (_PayloadHasher.allowSubtle) {
219
- try {
220
- const enc = new TextEncoder();
221
- const data = enc.encode(stringToHash);
222
- const hashArray = await this.subtleHash(data);
223
- return hexFromArrayBuffer(hashArray, {
224
- bitLength: 256
225
- });
226
- } catch {
227
- _PayloadHasher.allowSubtle = false;
228
- }
229
- }
230
- await this.wasmInitialized;
231
- if (this.wasmSupport.canUseWasm) {
232
- try {
233
- return this.wasmHash(stringToHash);
234
- } catch {
235
- this.wasmSupport.allowWasm = false;
236
- }
237
- }
238
- return await this.jsHash(stringToHash);
239
- }
240
- static hashFields(obj) {
241
- return sortFields(removeEmptyFields(deepOmitPrefixedFields(obj, "_")));
242
- }
243
- /**
244
- * Creates an array of payload/hash tuples based on the payloads passed in
245
- * @param objs Any array of payloads
246
- * @returns An array of payload/hash tuples
247
- */
248
- static async hashPairs(objs) {
249
- return await Promise.all(objs.map(async (obj) => [
250
- obj,
251
- await _PayloadHasher.hash(obj)
252
- ]));
253
- }
254
- /**
255
- * Synchronously hashes a payload
256
- * @param obj A payload
257
- * @returns The payload hash
258
- */
259
- static hashSync(obj) {
260
- return asHash(shajs("sha256").update(this.stringifyHashFields(obj)).digest().toString("hex"), true);
261
- }
262
- /**
263
- * Creates an array of payload hashes based on the payloads passed in
264
- * @param objs Any array of payloads
265
- * @returns An array of payload hashes
266
- */
267
- static async hashes(objs) {
268
- return objs ? await Promise.all(objs.map((obj) => this.hash(obj))) : void 0;
269
- }
270
- static async jsHash(data) {
271
- if (_PayloadHasher.warnIfUsingJsHash) {
272
- console.warn("Using jsHash [No subtle or wasm?]");
273
- }
274
- const pool = this.jsHashPool;
275
- return pool === null ? asHash(shajs("sha256").update(data).digest().toString("hex"), true) : await pool.queue(async (thread) => await thread.hash(data));
276
- }
277
- /**
278
- * Returns a clone of the payload that is JSON safe
279
- * @param obj A payload
280
- * @param meta Keeps underscore (meta) fields if set to true
281
- * @returns Returns a clone of the payload that is JSON safe
282
- */
283
- static json(payload, meta = false) {
284
- return sortFields(removeEmptyFields(meta ? payload : deepOmitPrefixedFields(payload, "_")));
285
- }
286
- /** @deprecated us json instead */
287
- static jsonPayload(payload, meta = false) {
288
- return this.json(payload, meta);
289
- }
290
- static stringifyHashFields(obj) {
291
- return JSON.stringify(this.hashFields(obj));
292
- }
293
- static async subtleHash(data) {
294
- const pool = this.subtleHashPool;
295
- return pool === null ? await subtle.digest("SHA-256", data) : await pool.queue(async (thread) => await thread.hash(data));
296
- }
297
- static async wasmHash(data) {
298
- const pool = this.wasmHashPool;
299
- return pool === null ? asHash(await sha256(data), true) : pool.queue(async (thread) => await thread.hash(data));
300
- }
301
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
302
- static createWorkerPool(url, func, size = 8) {
303
- if (url) console.debug(`createWorkerPool: ${url}`);
304
- const createFunc = /* @__PURE__ */ __name(() => spawn(this.createWorker(url, func)), "createFunc");
305
- return Pool(createFunc, size);
306
- }
307
- async hash() {
308
- return await _PayloadHasher.hash(this.obj);
309
- }
310
- hashSync() {
311
- return _PayloadHasher.hashSync(this.obj);
312
- }
313
- /**
314
- * Returns a clone of the payload that is JSON safe
315
- * @param meta Keeps underscore (meta) fields if set to true
316
- * @returns Returns a clone of the payload that is JSON safe
317
- */
318
- json(meta = false) {
319
- return _PayloadHasher.json(this.obj, meta);
320
- }
321
- };
322
- __name(_PayloadHasher, "PayloadHasher");
323
- __publicField(_PayloadHasher, "allowHashPooling", true);
324
- __publicField(_PayloadHasher, "allowSubtle", true);
325
- __publicField(_PayloadHasher, "createBrowserWorker");
326
- __publicField(_PayloadHasher, "createNodeWorker");
327
- __publicField(_PayloadHasher, "initialized", (() => {
328
- globalThis.xyo = globalThis.xyo ?? {};
329
- if (globalThis.xyo.hashing) {
330
- console.warn("Two static instances of PayloadHasher detected");
331
- }
332
- globalThis.xyo === globalThis.xyo;
333
- })());
334
- __publicField(_PayloadHasher, "jsHashWorkerUrl");
335
- __publicField(_PayloadHasher, "subtleHashWorkerUrl");
336
- __publicField(_PayloadHasher, "warnIfUsingJsHash", true);
337
- __publicField(_PayloadHasher, "wasmHashWorkerUrl");
338
- __publicField(_PayloadHasher, "wasmInitialized", wasmSupportStatic.initialize());
339
- __publicField(_PayloadHasher, "wasmSupport", wasmSupportStatic);
340
- // These get set to null if they fail to create and then we just don't use workers - needed for storybook
341
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
342
- __publicField(_PayloadHasher, "_jsHashPool");
343
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
344
- __publicField(_PayloadHasher, "_subtleHashPool");
345
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
346
- __publicField(_PayloadHasher, "_wasmHashPool");
347
- var PayloadHasher = _PayloadHasher;
348
-
349
- // src/NodePayloadHasher.ts
350
- PayloadHasher.createNodeWorker = createNodeWorker;
351
- var _NodePayloadHasher = class _NodePayloadHasher extends PayloadHasher {
352
- };
353
- __name(_NodePayloadHasher, "NodePayloadHasher");
354
- __publicField(_NodePayloadHasher, "createNodeWorker", createNodeWorker);
355
- var NodePayloadHasher = _NodePayloadHasher;
356
- export {
357
- NodePayloadHasher as PayloadHasher,
358
- deepBy,
359
- deepOmitPrefixedFields,
360
- deepPickUnderscoreFields,
361
- hasEmptyFields,
362
- removeEmptyFields,
363
- sortFields
364
- };
1
+ var k=Object.defineProperty;var T=(r,t,s)=>t in r?k(r,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[t]=s;var o=(r,t)=>k(r,"name",{value:t,configurable:!0}),l=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(t,s)=>(typeof require<"u"?require:t)[s]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var i=(r,t,s)=>T(r,typeof t!="symbol"?t+"":t,s);import{typeOf as $}from"@xylabs/typeof";var E=o(r=>{if(r===null||Array.isArray(r))return!1;if(r===void 0||Object.keys(r).length===0)return!0;for(let[t]of Object.values(r))if($(t)==="object"){if(E(t))return!0}else if(t===void 0)return!0;return!1},"hasEmptyFields");import{Worker as N}from"@xylabs/threads";var y=o(r=>{try{let t=(r==null?void 0:r.toString().slice(6))??"";return new N(t,{fromSource:!0})}catch{return}},"createNodeWorker");import{assertEx as A}from"@xylabs/assert";import{asHash as d,hexFromArrayBuffer as J}from"@xylabs/hex";import{ObjectWrapper as L}from"@xylabs/object";import{subtle as V}from"@xylabs/platform";import{Pool as D,spawn as G}from"@xylabs/threads";import{WasmSupport as K}from"@xyo-network/wasm";import{sha256 as M}from"hash-wasm";import F from"sha.js";import{typeOf as v}from"@xylabs/typeof";var m=o(r=>{if(r===null||Array.isArray(r))return r;let t={};for(let[s,e]of Object.entries(r))v(e)==="object"?t[s]=m(e):e!==void 0&&(t[s]=e);return t},"removeEmptyFields");import{omitBy as S}from"@xylabs/lodash";import{isObject as z}from"@xylabs/object";var C=o(r=>z(r)?f(r):r,"subSort"),f=o(r=>{let t={},s=Object.keys(r);for(let e of s.sort())t[e]=C(r[e]);return t},"sortFields");var W=o(()=>{let r=l("sha.js"),{asHash:t}=l("@xylabs/hex"),{expose:s}=l("@xylabs/threads/worker");s({hash(e){return t(r("sha256").update(e).digest().toString("hex"),!0)}})},"jsHashFunc");var j=o(()=>{let{subtle:r}=l("@xylabs/platform"),{expose:t}=l("@xylabs/threads/worker");t({async hash(s){return await r.digest("SHA-256",s)}})},"subtleHashFunc");var P=o(()=>{let{sha256:r}=l("hash-wasm"),{asHash:t}=l("@xylabs/hex"),{expose:s}=l("@xylabs/threads/worker");s({async hash(e){return t(await r(e),!0)}})},"wasmHashFunc");var O=new K(["bigInt"]),U=o(r=>(t,s)=>(A(typeof s=="string",()=>`Invalid key type [${s}, ${typeof s}]`),s.startsWith(r)),"omitByPredicate"),a=class a extends L{static get jsHashPool(){if(!this.allowHashPooling||this._jsHashPool===null)return null;try{return this._jsHashPool=this._jsHashPool??(this.jsHashWorkerUrl?this.createWorkerPool(this.jsHashWorkerUrl,W):null)}catch{return console.warn("Creating js hash worker failed"),this._jsHashPool=null,null}}static get subtleHashPool(){if(!this.allowHashPooling||this._subtleHashPool===null)return null;try{return this._subtleHashPool=this._subtleHashPool??(this.subtleHashWorkerUrl?this.createWorkerPool(this.subtleHashWorkerUrl,j):null)}catch{return console.warn("Creating subtle hash worker failed"),this._subtleHashPool=null,null}}static get wasmHashPool(){if(!this.allowHashPooling||this._wasmHashPool===null)return null;try{return this._wasmHashPool=this._wasmHashPool??(this.wasmHashWorkerUrl?this.createWorkerPool(this.wasmHashWorkerUrl,P):null)}catch{return console.warn("Creating wasm hash worker failed"),this._wasmHashPool=null,null}}static createWorker(t,s){var e,n;return t&&console.debug(`createWorker: ${t}`),A(((e=this.createBrowserWorker)==null?void 0:e.call(this,t))??((n=this.createNodeWorker)==null?void 0:n.call(this,s)),()=>"Unable to create worker")}static async filterExcludeByHash(t=[],s){var n;let e=Array.isArray(s)?s:[s];return(n=(await this.hashPairs(t)).filter(([c,h])=>!e.includes(h)))==null?void 0:n.map(c=>c[0])}static async filterIncludeByHash(t=[],s){var n;let e=Array.isArray(s)?s:[s];return(n=(await this.hashPairs(t)).filter(([c,h])=>e.includes(h)))==null?void 0:n.map(c=>c[0])}static async findByHash(t=[],s){var e;return(e=(await this.hashPairs(t)).find(([n,c])=>c===s))==null?void 0:e[0]}static async hash(t){let s=this.stringifyHashFields(t);if(a.allowSubtle)try{let n=new TextEncoder().encode(s),c=await this.subtleHash(n);return J(c,{bitLength:256})}catch{a.allowSubtle=!1}if(await this.wasmInitialized,this.wasmSupport.canUseWasm)try{return this.wasmHash(s)}catch{this.wasmSupport.allowWasm=!1}return await this.jsHash(s)}static hashFields(t){return f(m(S(t,U("_"))))}static async hashPairs(t){return await Promise.all(t.map(async s=>[s,await a.hash(s)]))}static hashSync(t){return d(F("sha256").update(this.stringifyHashFields(t)).digest().toString("hex"),!0)}static async hashes(t){return t?await Promise.all(t.map(s=>this.hash(s))):void 0}static async jsHash(t){a.warnIfUsingJsHash&&console.warn("Using jsHash [No subtle or wasm?]");let s=this.jsHashPool;return s===null?d(F("sha256").update(t).digest().toString("hex"),!0):await s.queue(async e=>await e.hash(t))}static json(t,s=!1){return f(m(s?t:S(t,U("_"))))}static jsonPayload(t,s=!1){return this.json(t,s)}static stringifyHashFields(t){return JSON.stringify(this.hashFields(t))}static async subtleHash(t){let s=this.subtleHashPool;return s===null?await V.digest("SHA-256",t):await s.queue(async e=>await e.hash(t))}static async wasmHash(t){let s=this.wasmHashPool;return s===null?d(await M(t),!0):s.queue(async e=>await e.hash(t))}static createWorkerPool(t,s,e=8){return t&&console.debug(`createWorkerPool: ${t}`),D(o(()=>G(this.createWorker(t,s)),"createFunc"),e)}async hash(){return await a.hash(this.obj)}hashSync(){return a.hashSync(this.obj)}json(t=!1){return a.json(this.obj,t)}};o(a,"PayloadHasher"),i(a,"allowHashPooling",!0),i(a,"allowSubtle",!0),i(a,"createBrowserWorker"),i(a,"createNodeWorker"),i(a,"initialized",(()=>{globalThis.xyo=globalThis.xyo??{},globalThis.xyo.hashing&&console.warn("Two static instances of PayloadHasher detected"),globalThis.xyo,globalThis.xyo})()),i(a,"jsHashWorkerUrl"),i(a,"subtleHashWorkerUrl"),i(a,"warnIfUsingJsHash",!0),i(a,"wasmHashWorkerUrl"),i(a,"wasmInitialized",O.initialize()),i(a,"wasmSupport",O),i(a,"_jsHashPool"),i(a,"_subtleHashPool"),i(a,"_wasmHashPool");var u=a;u.createNodeWorker=y;var p=class p extends u{};o(p,"NodePayloadHasher"),i(p,"createNodeWorker",y);var H=p;import{assertEx as B}from"@xylabs/assert";import{mapValues as Q,merge as R,omitBy as g,pickBy as b}from"@xylabs/lodash";import{isObject as q}from"@xylabs/object";var x=o((r,t,s)=>{if(Array.isArray(r))return r;let e=b(r,q),n=b(r,w=>!q(w)),c=g(e,t),h=g(n,t),I=Q(c,w=>x(w,t,s));return R({},h,I)},"deepBy"),Et=o((r,t)=>x(r,(s,e)=>(B(typeof e=="string",()=>`Invalid key type [${e}, ${typeof e}]`),e.startsWith(t)),g),"deepOmitPrefixedFields"),Nt=o(r=>x(r,(t,s)=>(B(typeof s=="string",()=>`Invalid key type [${s}, ${typeof s}]`),s.startsWith("_")),b),"deepPickUnderscoreFields");export{H as PayloadHasher,x as deepBy,Et as deepOmitPrefixedFields,Nt as deepPickUnderscoreFields,E as hasEmptyFields,m as removeEmptyFields,f as sortFields};
365
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hasEmptyFields.ts","../../src/createNodeWorker.ts","../../src/PayloadHasher.ts","../../src/removeEmptyFields.ts","../../src/removeFields.ts","../../src/sortFields.ts","../../src/worker/jsHashNode.ts","../../src/worker/subtleHashNode.ts","../../src/worker/wasmHashNode.ts","../../src/NodePayloadHasher.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 { EmptyObject, ObjectWrapper } from '@xylabs/object'\nimport { subtle } from '@xylabs/platform'\nimport { ModuleThread, Pool, spawn, Worker } from '@xylabs/threads'\n// eslint-disable-next-line import/no-internal-modules\nimport { WorkerModule } from '@xylabs/threads/dist/types/worker'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { sha256 } from 'hash-wasm'\nimport shajs from 'sha.js'\n\nimport { removeEmptyFields } from './removeEmptyFields'\nimport { deepOmitPrefixedFields } from './removeFields'\nimport { sortFields } from './sortFields'\nimport { jsHashFunc, subtleHashFunc, wasmHashFunc } from './worker'\n\nconst wasmSupportStatic = new WasmSupport(['bigInt'])\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(deepOmitPrefixedFields(obj, '_')))\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 : deepOmitPrefixedFields(payload, '_')))\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 { assertEx } from '@xylabs/assert'\nimport { mapValues, merge, omitBy, pickBy } from '@xylabs/lodash'\nimport { EmptyObject, isObject } from '@xylabs/object'\n// eslint-disable-next-line no-restricted-imports\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","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'\nimport { PayloadHasher } from './PayloadHasher'\n\nPayloadHasher.createNodeWorker = createNodeWorker\n\nexport class NodePayloadHasher extends PayloadHasher {\n static override createNodeWorker = createNodeWorker\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","ObjectWrapper","subtle","Pool","spawn","WasmSupport","sha256","shajs","typeOf","removeEmptyFields","obj","Array","isArray","newObject","key","value","Object","entries","typeOf","undefined","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","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","PayloadHasher","ObjectWrapper","jsHashPool","allowHashPooling","_jsHashPool","jsHashWorkerUrl","createWorkerPool","jsHashFunc","console","warn","subtleHashPool","_subtleHashPool","subtleHashWorkerUrl","subtleHashFunc","wasmHashPool","_wasmHashPool","wasmHashWorkerUrl","wasmHashFunc","createWorker","url","func","debug","assertEx","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","deepOmitPrefixedFields","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"]}
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 { EmptyObject, ObjectWrapper } from '@xylabs/object'\nimport { subtle } from '@xylabs/platform'\nimport { ModuleThread, Pool, spawn, Worker } from '@xylabs/threads'\n// eslint-disable-next-line import/no-unresolved\nimport { WorkerModule } from '@xylabs/threads/dist/types/worker'\nimport { WasmSupport } from '@xyo-network/wasm'\nimport { sha256 } from 'hash-wasm'\nimport shajs from 'sha.js'\n\nimport { removeEmptyFields } from './removeEmptyFields'\nimport { omitBy } from '@xylabs/lodash'\nimport { sortFields } from './sortFields'\nimport { jsHashFunc, subtleHashFunc, wasmHashFunc } from './worker'\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 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 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 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'\nimport { PayloadHasher } from './PayloadHasher'\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","__name","obj","Array","isArray","undefined","Object","keys","length","value","values","typeOf","Worker","createNodeWorker","__name","func","code","toString","slice","Worker","fromSource","assertEx","asHash","hexFromArrayBuffer","ObjectWrapper","subtle","Pool","spawn","WasmSupport","sha256","shajs","typeOf","removeEmptyFields","__name","obj","Array","isArray","newObject","key","value","Object","entries","typeOf","undefined","omitBy","isObject","subSort","__name","value","isObject","sortFields","obj","result","keys","Object","key","sort","jsHashFunc","__name","shajs","require","asHash","expose","hash","data","update","digest","toString","subtleHashFunc","__name","subtle","require","expose","hash","data","digest","wasmHashFunc","__name","sha256","require","asHash","expose","hash","data","wasmSupportStatic","WasmSupport","omitByPredicate","__name","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","_a","_b","debug","createBrowserWorker","createNodeWorker","filterExcludeByHash","objs","hash","hashes","Array","isArray","hashPairs","filter","objHash","includes","map","pair","filterIncludeByHash","findByHash","find","obj","stringToHash","stringifyHashFields","allowSubtle","data","TextEncoder","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","Pool","spawn","__publicField","initialized","globalThis","xyo","hashing","initialize","_PayloadHasher","PayloadHasher","createNodeWorker","NodePayloadHasher","__publicField","_NodePayloadHasher","assertEx","mapValues","merge","omitBy","pickBy","isObject","deepBy","__name","obj","predicate","func","Array","isArray","onlyObjects","pickBy","isObject","nonObjects","value","pickedObjects","omitBy","pickedNonObjects","processedObjects","mapValues","merge","deepOmitPrefixedFields","prefix","_","key","assertEx","startsWith","deepPickUnderscoreFields"]}
@@ -1,2 +1,3 @@
1
- export declare const removeEmptyFields: <T extends object>(obj: T) => T;
1
+ import { EmptyObject } from '@xylabs/object';
2
+ export declare const removeEmptyFields: <T extends EmptyObject>(obj: T) => T;
2
3
  //# sourceMappingURL=removeEmptyFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,0BAAgC,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,CAYjE,CAAA"}
@@ -1,2 +1,3 @@
1
- export declare const removeEmptyFields: <T extends object>(obj: T) => T;
1
+ import { EmptyObject } from '@xylabs/object';
2
+ export declare const removeEmptyFields: <T extends EmptyObject>(obj: T) => T;
2
3
  //# sourceMappingURL=removeEmptyFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,0BAAgC,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,CAYjE,CAAA"}
@@ -1,2 +1,3 @@
1
- export declare const removeEmptyFields: <T extends object>(obj: T) => T;
1
+ import { EmptyObject } from '@xylabs/object';
2
+ export declare const removeEmptyFields: <T extends EmptyObject>(obj: T) => T;
2
3
  //# sourceMappingURL=removeEmptyFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeEmptyFields.d.ts","sourceRoot":"","sources":["../../src/removeEmptyFields.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,0BAAgC,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,CAYjE,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { omitBy, pickBy } from '@xylabs/lodash';
2
+ import { EmptyObject } from '@xylabs/object';
2
3
  type ValueKeyIteratee<T> = (value: T, key: string) => unknown;
3
- export declare const deepBy: <T extends object>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
4
- export declare const deepOmitPrefixedFields: <T extends object>(obj: T, prefix: string) => T;
5
- export declare const deepPickUnderscoreFields: <T extends object>(obj: T) => T;
4
+ export declare const deepBy: <T extends EmptyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
5
+ export declare const deepOmitPrefixedFields: <T extends EmptyObject>(obj: T, prefix: string) => T;
6
+ export declare const deepPickUnderscoreFields: <T extends EmptyObject>(obj: T) => T;
6
7
  export {};
7
8
  //# sourceMappingURL=removeFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjE,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAE7D,eAAO,MAAM,MAAM,0BAAgC,CAAC,aAAa,iBAAiB,CAAC,CAAC,QAAQ,aAAa,GAAG,aAAa,KAAG,CAiB3H,CAAA;AAED,eAAO,MAAM,sBAAsB,0BAAgC,CAAC,UAAU,MAAM,KAAG,CAStF,CAAA;AAED,eAAO,MAAM,wBAAwB,0BAAgC,CAAC,KAAG,CASxE,CAAA"}
1
+ {"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAY,MAAM,gBAAgB,CAAA;AACtD,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAE7D,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,aAAa,gBAAgB,CAAC,CAAC,CAAC,QAAQ,OAAO,MAAM,GAAG,OAAO,MAAM,KAAG,CAiB3H,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,UAAU,MAAM,KAAG,CAStF,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,CASxE,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { omitBy, pickBy } from '@xylabs/lodash';
2
+ import { EmptyObject } from '@xylabs/object';
2
3
  type ValueKeyIteratee<T> = (value: T, key: string) => unknown;
3
- export declare const deepBy: <T extends object>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
4
- export declare const deepOmitPrefixedFields: <T extends object>(obj: T, prefix: string) => T;
5
- export declare const deepPickUnderscoreFields: <T extends object>(obj: T) => T;
4
+ export declare const deepBy: <T extends EmptyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
5
+ export declare const deepOmitPrefixedFields: <T extends EmptyObject>(obj: T, prefix: string) => T;
6
+ export declare const deepPickUnderscoreFields: <T extends EmptyObject>(obj: T) => T;
6
7
  export {};
7
8
  //# sourceMappingURL=removeFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjE,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAE7D,eAAO,MAAM,MAAM,0BAAgC,CAAC,aAAa,iBAAiB,CAAC,CAAC,QAAQ,aAAa,GAAG,aAAa,KAAG,CAiB3H,CAAA;AAED,eAAO,MAAM,sBAAsB,0BAAgC,CAAC,UAAU,MAAM,KAAG,CAStF,CAAA;AAED,eAAO,MAAM,wBAAwB,0BAAgC,CAAC,KAAG,CASxE,CAAA"}
1
+ {"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAY,MAAM,gBAAgB,CAAA;AACtD,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAE7D,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,aAAa,gBAAgB,CAAC,CAAC,CAAC,QAAQ,OAAO,MAAM,GAAG,OAAO,MAAM,KAAG,CAiB3H,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,UAAU,MAAM,KAAG,CAStF,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,CASxE,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { omitBy, pickBy } from '@xylabs/lodash';
2
+ import { EmptyObject } from '@xylabs/object';
2
3
  type ValueKeyIteratee<T> = (value: T, key: string) => unknown;
3
- export declare const deepBy: <T extends object>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
4
- export declare const deepOmitPrefixedFields: <T extends object>(obj: T, prefix: string) => T;
5
- export declare const deepPickUnderscoreFields: <T extends object>(obj: T) => T;
4
+ export declare const deepBy: <T extends EmptyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy) => T;
5
+ export declare const deepOmitPrefixedFields: <T extends EmptyObject>(obj: T, prefix: string) => T;
6
+ export declare const deepPickUnderscoreFields: <T extends EmptyObject>(obj: T) => T;
6
7
  export {};
7
8
  //# sourceMappingURL=removeFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjE,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAE7D,eAAO,MAAM,MAAM,0BAAgC,CAAC,aAAa,iBAAiB,CAAC,CAAC,QAAQ,aAAa,GAAG,aAAa,KAAG,CAiB3H,CAAA;AAED,eAAO,MAAM,sBAAsB,0BAAgC,CAAC,UAAU,MAAM,KAAG,CAStF,CAAA;AAED,eAAO,MAAM,wBAAwB,0BAAgC,CAAC,KAAG,CASxE,CAAA"}
1
+ {"version":3,"file":"removeFields.d.ts","sourceRoot":"","sources":["../../src/removeFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAY,MAAM,gBAAgB,CAAA;AACtD,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAE7D,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,aAAa,gBAAgB,CAAC,CAAC,CAAC,QAAQ,OAAO,MAAM,GAAG,OAAO,MAAM,KAAG,CAiB3H,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,UAAU,MAAM,KAAG,CAStF,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,CASxE,CAAA"}
@@ -1,2 +1,3 @@
1
- export declare const sortFields: <T extends object>(obj: T) => T;
1
+ import { EmptyObject } from '@xylabs/object';
2
+ export declare const sortFields: <T extends EmptyObject>(obj: T) => T;
2
3
  //# sourceMappingURL=sortFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,UAAU,0BAAgC,CAAC,MAOvD,CAAA"}
1
+ {"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAY,MAAM,gBAAgB,CAAA;AAOjE,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAMrC,CAClB,CAAA"}
@@ -1,2 +1,3 @@
1
- export declare const sortFields: <T extends object>(obj: T) => T;
1
+ import { EmptyObject } from '@xylabs/object';
2
+ export declare const sortFields: <T extends EmptyObject>(obj: T) => T;
2
3
  //# sourceMappingURL=sortFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,UAAU,0BAAgC,CAAC,MAOvD,CAAA"}
1
+ {"version":3,"file":"sortFields.d.ts","sourceRoot":"","sources":["../../src/sortFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAY,MAAM,gBAAgB,CAAA;AAOjE,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAMrC,CAClB,CAAA"}
@@ -1,2 +1,3 @@
1
- export declare const sortFields: <T extends object>(obj: T) => T;
1
+ import { EmptyObject } from '@xylabs/object';
2
+ export declare const sortFields: <T extends EmptyObject>(obj: T) => T;
2
3
  //# sourceMappingURL=sortFields.d.ts.map