@xyo-network/hash 7.0.5 → 7.0.6

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 (73) hide show
  1. package/LICENSE +0 -675
  2. package/README.md +1 -47
  3. package/dist/browser/worker/subtleHash-bundle.mjs +1 -1
  4. package/dist/browser/worker/wasmHash-bundle.mjs +4 -4
  5. package/dist/neutral/index.d.ts +6 -0
  6. package/dist/neutral/index.d.ts.map +1 -0
  7. package/dist/neutral/index.mjs +3 -0
  8. package/dist/neutral/index.mjs.map +7 -0
  9. package/package.json +21 -38
  10. package/dist/browser/BrowserObjectHasher.d.ts +0 -9
  11. package/dist/browser/BrowserObjectHasher.d.ts.map +0 -1
  12. package/dist/browser/NodeObjectHasher.d.ts +0 -6
  13. package/dist/browser/NodeObjectHasher.d.ts.map +0 -1
  14. package/dist/browser/ObjectHasher.d.ts +0 -69
  15. package/dist/browser/ObjectHasher.d.ts.map +0 -1
  16. package/dist/browser/createBrowserWorker.d.ts +0 -3
  17. package/dist/browser/createBrowserWorker.d.ts.map +0 -1
  18. package/dist/browser/createNodeWorker.d.ts +0 -3
  19. package/dist/browser/createNodeWorker.d.ts.map +0 -1
  20. package/dist/browser/hasEmptyFields.d.ts +0 -3
  21. package/dist/browser/hasEmptyFields.d.ts.map +0 -1
  22. package/dist/browser/index-browser.d.ts +0 -4
  23. package/dist/browser/index-browser.d.ts.map +0 -1
  24. package/dist/browser/index-browser.mjs +0 -289
  25. package/dist/browser/index-browser.mjs.map +0 -7
  26. package/dist/browser/index.d.ts +0 -5
  27. package/dist/browser/index.d.ts.map +0 -1
  28. package/dist/browser/removeEmptyFields.d.ts +0 -3
  29. package/dist/browser/removeEmptyFields.d.ts.map +0 -1
  30. package/dist/browser/sortFields.d.ts +0 -3
  31. package/dist/browser/sortFields.d.ts.map +0 -1
  32. package/dist/browser/worker/index.d.ts +0 -3
  33. package/dist/browser/worker/index.d.ts.map +0 -1
  34. package/dist/browser/worker/subtleHash.d.ts +0 -2
  35. package/dist/browser/worker/subtleHash.d.ts.map +0 -1
  36. package/dist/browser/worker/subtleHashNode.d.ts +0 -2
  37. package/dist/browser/worker/subtleHashNode.d.ts.map +0 -1
  38. package/dist/browser/worker/wasmHash.d.ts +0 -2
  39. package/dist/browser/worker/wasmHash.d.ts.map +0 -1
  40. package/dist/browser/worker/wasmHashNode.d.ts +0 -2
  41. package/dist/browser/worker/wasmHashNode.d.ts.map +0 -1
  42. package/dist/node/BrowserObjectHasher.d.ts +0 -9
  43. package/dist/node/BrowserObjectHasher.d.ts.map +0 -1
  44. package/dist/node/NodeObjectHasher.d.ts +0 -6
  45. package/dist/node/NodeObjectHasher.d.ts.map +0 -1
  46. package/dist/node/ObjectHasher.d.ts +0 -69
  47. package/dist/node/ObjectHasher.d.ts.map +0 -1
  48. package/dist/node/createBrowserWorker.d.ts +0 -3
  49. package/dist/node/createBrowserWorker.d.ts.map +0 -1
  50. package/dist/node/createNodeWorker.d.ts +0 -3
  51. package/dist/node/createNodeWorker.d.ts.map +0 -1
  52. package/dist/node/hasEmptyFields.d.ts +0 -3
  53. package/dist/node/hasEmptyFields.d.ts.map +0 -1
  54. package/dist/node/index-browser.d.ts +0 -4
  55. package/dist/node/index-browser.d.ts.map +0 -1
  56. package/dist/node/index.d.ts +0 -5
  57. package/dist/node/index.d.ts.map +0 -1
  58. package/dist/node/index.mjs +0 -279
  59. package/dist/node/index.mjs.map +0 -7
  60. package/dist/node/removeEmptyFields.d.ts +0 -3
  61. package/dist/node/removeEmptyFields.d.ts.map +0 -1
  62. package/dist/node/sortFields.d.ts +0 -3
  63. package/dist/node/sortFields.d.ts.map +0 -1
  64. package/dist/node/worker/index.d.ts +0 -3
  65. package/dist/node/worker/index.d.ts.map +0 -1
  66. package/dist/node/worker/subtleHash.d.ts +0 -2
  67. package/dist/node/worker/subtleHash.d.ts.map +0 -1
  68. package/dist/node/worker/subtleHashNode.d.ts +0 -2
  69. package/dist/node/worker/subtleHashNode.d.ts.map +0 -1
  70. package/dist/node/worker/wasmHash.d.ts +0 -2
  71. package/dist/node/worker/wasmHash.d.ts.map +0 -1
  72. package/dist/node/worker/wasmHashNode.d.ts +0 -2
  73. package/dist/node/worker/wasmHashNode.d.ts.map +0 -1
package/README.md CHANGED
@@ -1,49 +1,3 @@
1
- [![logo][]](https://xyo.network)
2
-
3
1
  # @xyo-network/hash
4
2
 
5
- [![npm][npm-badge]][npm-link]
6
- [![license][license-badge]][license-link]
7
-
8
- > Primary SDK for using XYO Protocol 2.0
9
-
10
- ## Install
11
-
12
- Using npm:
13
-
14
- ```sh
15
- npm install {{name}}
16
- ```
17
-
18
- Using yarn:
19
-
20
- ```sh
21
- yarn add {{name}}
22
- ```
23
-
24
- Using pnpm:
25
-
26
- ```sh
27
- pnpm add {{name}}
28
- ```
29
-
30
- Using bun:
31
-
32
- ```sh
33
- bun add {{name}}
34
- ```
35
-
36
-
37
- ## License
38
-
39
- See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only).
40
-
41
- ## Credits
42
-
43
- [Made with 🔥 and ❄️ by XYO Foundation](https://xyo.network)
44
-
45
- [npm-badge]: https://img.shields.io/npm/v/@xyo-network/hash.svg
46
- [npm-link]: https://www.npmjs.com/package/@xyo-network/hash
47
- [license-badge]: https://img.shields.io/npm/l/@xyo-network/hash.svg
48
- [license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
49
- [logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
3
+ Deprecated compatibility stub. Use `@xyo-network/sdk-protocol/hash` instead.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  (() => {
3
- // ../../../../../../node_modules/.pnpm/@xylabs+threads@7.0.1_debug@4.4.3_observable-fns@0.6.1/node_modules/@xylabs/threads/dist/browser/worker/worker.browser.mjs
3
+ // ../../../../../../node_modules/.pnpm/@xylabs+threads@7.0.4_@opentelemetry+api@1.9.1_@opentelemetry+sdk-trace-base@2.8.0_@ope_2d1c7879bd64186a17682f1cb6bc1690/node_modules/@xylabs/threads/dist/browser/worker/worker.browser.mjs
4
4
  var DefaultErrorSerializer = {
5
5
  deserialize: (message) => {
6
6
  const error = Object.create(Error.prototype);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  (() => {
3
- // ../../../../../../node_modules/.pnpm/@xylabs+sdk@7.0.1_@opentelemetry+api@1.9.1_@opentelemetry+sdk-trace-base@2.8.0_@opentel_5cda832fbcd9b26c711a930815db0b42/node_modules/@xylabs/sdk/dist/_pkg/typeof/neutral/index.mjs
3
+ // ../../../../../../node_modules/.pnpm/@ariestools+sdk@7.0.4_@opentelemetry+api@1.9.1_@opentelemetry+sdk-trace-base@2.8.0_@ope_97da9f513cbe94e19a96d20f67b150bc/node_modules/@ariestools/sdk/dist/_pkg/typeof/neutral/index.mjs
4
4
  function isUndefined(value) {
5
5
  return value === void 0;
6
6
  }
@@ -854,7 +854,7 @@
854
854
  return _refine(ZodMiniCustom, fn, _params);
855
855
  }
856
856
 
857
- // ../../../../../../node_modules/.pnpm/@xylabs+sdk@7.0.1_@opentelemetry+api@1.9.1_@opentelemetry+sdk-trace-base@2.8.0_@opentel_5cda832fbcd9b26c711a930815db0b42/node_modules/@xylabs/sdk/dist/_pkg/error/neutral/index.mjs
857
+ // ../../../../../../node_modules/.pnpm/@ariestools+sdk@7.0.4_@opentelemetry+api@1.9.1_@opentelemetry+sdk-trace-base@2.8.0_@ope_97da9f513cbe94e19a96d20f67b150bc/node_modules/@ariestools/sdk/dist/_pkg/error/neutral/index.mjs
858
858
  var assertError = (value, assert, defaultMessage) => {
859
859
  if (!isUndefined(assert)) {
860
860
  const assertString = typeof assert === "string" ? assert : typeof assert === "boolean" ? defaultMessage : assert(value, defaultMessage);
@@ -865,7 +865,7 @@
865
865
  return void 0;
866
866
  };
867
867
 
868
- // ../../../../../../node_modules/.pnpm/@xylabs+sdk@7.0.1_@opentelemetry+api@1.9.1_@opentelemetry+sdk-trace-base@2.8.0_@opentel_5cda832fbcd9b26c711a930815db0b42/node_modules/@xylabs/sdk/dist/_pkg/hex/neutral/index.mjs
868
+ // ../../../../../../node_modules/.pnpm/@ariestools+sdk@7.0.4_@opentelemetry+api@1.9.1_@opentelemetry+sdk-trace-base@2.8.0_@ope_97da9f513cbe94e19a96d20f67b150bc/node_modules/@ariestools/sdk/dist/_pkg/hex/neutral/index.mjs
869
869
  var HexRegExMinMax = (minBytes = 0, maxBytes = Number.MAX_SAFE_INTEGER / 2) => {
870
870
  return new RegExp(`^[a-f0-9]{${minBytes * 2},${maxBytes * 2}}$`);
871
871
  };
@@ -1024,7 +1024,7 @@
1024
1024
  transform((x) => hexToBigInt(toHex(x)))
1025
1025
  );
1026
1026
 
1027
- // ../../../../../../node_modules/.pnpm/@xylabs+threads@7.0.1_debug@4.4.3_observable-fns@0.6.1/node_modules/@xylabs/threads/dist/browser/worker/worker.browser.mjs
1027
+ // ../../../../../../node_modules/.pnpm/@xylabs+threads@7.0.4_@opentelemetry+api@1.9.1_@opentelemetry+sdk-trace-base@2.8.0_@ope_2d1c7879bd64186a17682f1cb6bc1690/node_modules/@xylabs/threads/dist/browser/worker/worker.browser.mjs
1028
1028
  var DefaultErrorSerializer = {
1029
1029
  deserialize: (message) => {
1030
1030
  const error = Object.create(Error.prototype);
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @deprecated Use `@xyo-network/sdk-protocol/hash` instead.
3
+ * `@xyo-network/hash` is a backward-compatibility re-export stub.
4
+ */
5
+ export * from '@xyo-network/sdk-protocol/hash';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,3 @@
1
+ // src/index.ts
2
+ export * from "@xyo-network/sdk-protocol/hash";
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["/**\n * @deprecated Use `@xyo-network/sdk-protocol/hash` instead.\n * `@xyo-network/hash` is a backward-compatibility re-export stub.\n */\nexport * from '@xyo-network/sdk-protocol/hash'\n"],
5
+ "mappings": ";AAIA,cAAc;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@xyo-network/hash",
3
- "version": "7.0.5",
4
- "description": "Primary SDK for using XYO Protocol 2.0",
3
+ "version": "7.0.6",
4
+ "description": "DEPRECATED - use @xyo-network/sdk-protocol/hash. Backward-compatibility re-export stub for @xyo-network/hash.",
5
+ "deprecated": "Use @xyo-network/sdk-protocol/hash instead. @xyo-network/hash is a backward-compatibility re-export stub and will not receive further updates.",
5
6
  "homepage": "https://xyo.network",
6
7
  "bugs": {
7
8
  "url": "git+https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues",
@@ -21,22 +22,16 @@
21
22
  "type": "module",
22
23
  "exports": {
23
24
  ".": {
24
- "node": {
25
- "types": "./dist/node/index.d.ts",
26
- "default": "./dist/node/index.mjs"
27
- },
28
- "default": {
29
- "types": "./dist/browser/index-browser.d.ts",
30
- "default": "./dist/browser/index-browser.mjs"
31
- }
25
+ "types": "./dist/neutral/index.d.ts",
26
+ "default": "./dist/neutral/index.mjs"
32
27
  },
28
+ "./package.json": "./package.json",
33
29
  "./worker/subtleHash-bundle.mjs": {
34
30
  "default": "./dist/browser/worker/subtleHash-bundle.mjs"
35
31
  },
36
32
  "./worker/wasmHash-bundle.mjs": {
37
33
  "default": "./dist/browser/worker/wasmHash-bundle.mjs"
38
- },
39
- "./package.json": "./package.json"
34
+ }
40
35
  },
41
36
  "files": [
42
37
  "dist",
@@ -46,40 +41,32 @@
46
41
  "README.md"
47
42
  ],
48
43
  "dependencies": {
49
- "@xyo-network/wasm": "~7.0.5"
44
+ "@xyo-network/sdk-protocol": "~7.0.6"
50
45
  },
51
46
  "devDependencies": {
52
- "@opentelemetry/api": "^1.9.1",
53
- "@opentelemetry/sdk-trace-base": "^2.8.0",
54
- "@xylabs/hex": "^7.0.1",
55
- "@xylabs/platform": "^7.0.1",
56
- "@xylabs/sdk": "^7.0.1",
57
- "@xylabs/threads": "~7.0.1",
58
- "@xylabs/toolchain": "~8.5.3",
59
- "@xylabs/tsconfig": "~8.5.3",
60
- "@xylabs/vitest-extended": "^7.0.1",
61
- "async-mutex": "^0.5.0",
47
+ "@xylabs/toolchain": "~8.5.12",
48
+ "@xylabs/tsconfig": "~8.5.12",
62
49
  "browserslist": "4.28.4",
63
- "debug": "^4.4.3",
64
- "esbuild": "^0.28.1",
65
50
  "eslint": "^10.6.0",
66
51
  "eslint-import-resolver-typescript": "^4.4.5",
67
- "hash-wasm": "~4.12.0",
68
- "observable-fns": "^0.6.1",
69
- "publint": "~0.3.21",
70
- "typescript": "~6.0.3",
71
- "vite": "^8.1.0",
72
- "vitest": "~4.1.9",
73
- "zod": "^4.4.3"
52
+ "typescript": "~6.0.3"
74
53
  },
75
54
  "peerDependencies": {
55
+ "@ariestools/sdk": "^7.0.4",
56
+ "@bitauth/libauth": "~3.0",
57
+ "@noble/post-quantum": "~0.6.1",
76
58
  "@opentelemetry/api": "^1.9",
77
59
  "@opentelemetry/sdk-trace-base": "^2.7",
78
- "@xylabs/sdk": "^7.0",
60
+ "@scure/base": "~2.2",
61
+ "@scure/bip39": "~2.2",
62
+ "@xylabs/geo": "^7.0",
79
63
  "@xylabs/threads": "^7.0",
64
+ "ajv": "^8.20",
80
65
  "async-mutex": "^0.5",
81
66
  "debug": "^4.4",
67
+ "ethers": "^6.16",
82
68
  "hash-wasm": "~4.12",
69
+ "idb": "^8.0",
83
70
  "observable-fns": "^0.6",
84
71
  "zod": "^4.4"
85
72
  },
@@ -90,10 +77,6 @@
90
77
  "access": "public"
91
78
  },
92
79
  "scripts": {
93
- "bundle": "pnpm subtleHashBundle && pnpm wasmHashBundle",
94
- "package-build": "echo build && package-build-only && pnpm bundle && pnpm publint",
95
- "package-compile": "echo compile && package-compile-only && pnpm bundle && pnpm publint",
96
- "subtleHashBundle": "esbuild src/worker/subtleHash.ts --bundle --outfile=dist/browser/worker/subtleHash-bundle.mjs --target=chrome120,firefox120,safari17,edge120",
97
- "wasmHashBundle": "esbuild src/worker/wasmHash.ts --bundle --outfile=dist/browser/worker/wasmHash-bundle.mjs --target=chrome120,firefox120,safari17,edge120"
80
+ "package-compile": "package-compile-only && node scripts/copy-worker-bundles.mjs"
98
81
  }
99
82
  }
@@ -1,9 +0,0 @@
1
- import type { EmptyObject } from '@xylabs/sdk';
2
- import { ObjectHasher } from './ObjectHasher.ts';
3
- export declare class BrowserObjectHasher<T extends EmptyObject = EmptyObject> extends ObjectHasher<T> {
4
- static readonly createBrowserWorker: (url?: URL) => import("@xylabs/threads/master").Worker;
5
- static readonly createNodeWorker: (func?: () => unknown) => import("@xylabs/threads/master").Worker;
6
- static readonly subtleHashWorkerUrl: URL | undefined;
7
- static readonly wasmHashWorkerUrl: URL | undefined;
8
- }
9
- //# sourceMappingURL=BrowserObjectHasher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BrowserObjectHasher.d.ts","sourceRoot":"","sources":["../../src/BrowserObjectHasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAI9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKhD,qBAAa,mBAAmB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IAC3F,gBAAyB,mBAAmB,yDAAsB;IAClE,gBAAyB,gBAAgB,oEAAmB;IAC5D,gBAAyB,mBAAmB,kBAMxC;IAEJ,gBAAyB,iBAAiB,kBAMtC;CACL"}
@@ -1,6 +0,0 @@
1
- import type { EmptyObject } from '@xylabs/sdk';
2
- import { ObjectHasher } from './ObjectHasher.ts';
3
- export declare class NodeObjectHasher<T extends EmptyObject = EmptyObject> extends ObjectHasher<T> {
4
- static readonly createNodeWorker: (func?: () => unknown) => import("@xylabs/threads/master").Worker;
5
- }
6
- //# sourceMappingURL=NodeObjectHasher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeObjectHasher.d.ts","sourceRoot":"","sources":["../../src/NodeObjectHasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIhD,qBAAa,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACxF,gBAAyB,gBAAgB,oEAAmB;CAC7D"}
@@ -1,69 +0,0 @@
1
- import type { EmptyObject, Hash } from '@xylabs/sdk';
2
- import { ObjectWrapper } from '@xylabs/sdk';
3
- import type { Worker } from '@xylabs/threads/master';
4
- import { WasmSupport } from '@xyo-network/wasm';
5
- export type WorkerFunction = ((...args: unknown[]) => unknown) | (() => unknown);
6
- export type WorkerModule<Keys extends string> = Record<Keys, WorkerFunction>;
7
- export declare class ObjectHasher<T extends EmptyObject = EmptyObject> extends ObjectWrapper<T> {
8
- static allowHashPooling: boolean;
9
- static allowSubtle: boolean;
10
- static createBrowserWorker?: (url?: URL) => Worker | undefined;
11
- static createNodeWorker?: (func?: () => unknown) => Worker | undefined;
12
- static readonly subtleHashWorkerUrl?: URL;
13
- static warnIfUsingJsHash: boolean;
14
- static readonly wasmHashWorkerUrl?: URL;
15
- static readonly wasmInitialized: Promise<void>;
16
- static readonly wasmSupport: WasmSupport;
17
- private static _subtleHashPool?;
18
- private static _wasmHashPool?;
19
- private static get subtleHashPool();
20
- private static get wasmHashPool();
21
- static createWorker(url?: URL, func?: () => unknown): Worker;
22
- static filterExcludeByHash<T extends EmptyObject>(objs: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
23
- static filterIncludeByHash<T extends EmptyObject>(objs: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
24
- static findByHash<T extends EmptyObject>(objs: T[] | undefined, hash: Hash): Promise<T | undefined>;
25
- /**
26
- * Asynchronously hashes a payload
27
- * @param obj A payload
28
- * @returns The payload hash
29
- */
30
- static hash<T extends EmptyObject>(obj: T): Promise<Hash>;
31
- static hashBytes(bytes: ArrayBuffer | Uint8Array): Promise<Hash>;
32
- static hashFields<T extends EmptyObject>(obj: T): T;
33
- /**
34
- * Creates an array of payload/hash tuples based on the payloads passed in
35
- * @param objs Any array of payloads
36
- * @returns An array of payload/hash tuples
37
- */
38
- static hashPairs<T extends EmptyObject>(objs: T[]): Promise<[T, Hash][]>;
39
- /**
40
- * Creates an array of payload hashes based on the payloads passed in
41
- * @param objs Any array of payloads
42
- * @returns An array of payload hashes
43
- */
44
- static hashes<T extends EmptyObject>(objs?: T[]): Promise<Hash[] | undefined>;
45
- /**
46
- * Returns a clone of the payload that is JSON safe
47
- * @param obj A payload
48
- * @param meta Keeps underscore (meta) fields if set to true
49
- * @returns Returns a clone of the payload that is JSON safe
50
- */
51
- static json<T extends EmptyObject>(payload: T, meta?: boolean): T;
52
- /** @deprecated us JSON instead */
53
- static jsonPayload<T extends EmptyObject>(payload: T, meta?: boolean): T;
54
- static stringifyHashFields<T extends EmptyObject>(obj: T): string;
55
- static subtleHash(data: Uint8Array<ArrayBuffer>): Promise<ArrayBuffer>;
56
- static wasmHash(data: Uint8Array): Promise<Hash>;
57
- private static createWorkerPool;
58
- hash(): Promise<Hash>;
59
- /**
60
- * Returns a clone of the payload that is JSON safe
61
- * @param meta Keeps underscore (meta) fields if set to true
62
- * @returns Returns a clone of the payload that is JSON safe
63
- */
64
- json(meta?: boolean): T;
65
- }
66
- /** @deprecated use PayloadBuilder or ObjectHasher instead */
67
- export declare class PayloadHasher<T extends object> extends ObjectHasher<T> {
68
- }
69
- //# sourceMappingURL=ObjectHasher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ObjectHasher.d.ts","sourceRoot":"","sources":["../../src/ObjectHasher.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Worker } from '@xylabs/threads/master';
2
- export declare const createBrowserWorker: (url?: URL) => Worker;
3
- //# sourceMappingURL=createBrowserWorker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createBrowserWorker.d.ts","sourceRoot":"","sources":["../../src/createBrowserWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,eAAO,MAAM,mBAAmB,GAAI,MAAM,GAAG,KAAG,MAM/C,CAAA"}
@@ -1,3 +0,0 @@
1
- import { Worker } from '@xylabs/threads/master';
2
- export declare const createNodeWorker: (func?: () => unknown) => Worker;
3
- //# sourceMappingURL=createNodeWorker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createNodeWorker.d.ts","sourceRoot":"","sources":["../../src/createNodeWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAI/C,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,OAAO,KAAG,MAUvD,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { EmptyObject } from '@xylabs/sdk';
2
- export declare const hasEmptyFields: <T extends EmptyObject>(obj: T) => boolean;
3
- //# sourceMappingURL=hasEmptyFields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hasEmptyFields.d.ts","sourceRoot":"","sources":["../../src/hasEmptyFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,WAAW,EAAE,KAAK,CAAC,KAAG,OAa9D,CAAA"}
@@ -1,4 +0,0 @@
1
- export { BrowserObjectHasher as ObjectHasher } from './BrowserObjectHasher.ts';
2
- export * from './removeEmptyFields.ts';
3
- export * from './sortFields.ts';
4
- //# sourceMappingURL=index-browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-browser.d.ts","sourceRoot":"","sources":["../../src/index-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC9E,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA"}
@@ -1,289 +0,0 @@
1
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
- }) : x)(function(x) {
4
- if (typeof require !== "undefined") return require.apply(this, arguments);
5
- throw Error('Dynamic require of "' + x + '" is not supported');
6
- });
7
-
8
- // src/createBrowserWorker.ts
9
- import { Worker } from "@xylabs/threads/master";
10
- var createBrowserWorker = (url) => {
11
- try {
12
- return new Worker(url);
13
- } catch {
14
- throw new Error("Unable to create worker");
15
- }
16
- };
17
-
18
- // src/createNodeWorker.ts
19
- import { Worker as Worker2 } from "@xylabs/threads/master";
20
- var createNodeWorker = (func) => {
21
- try {
22
- const code = func?.toString().slice(6) ?? "";
23
- return new Worker2(
24
- code,
25
- { fromSource: true }
26
- );
27
- } catch {
28
- throw new Error("Unable to create worker");
29
- }
30
- };
31
-
32
- // src/ObjectHasher.ts
33
- import {
34
- asHash,
35
- assertEx,
36
- hexFromArrayBuffer,
37
- ObjectWrapper,
38
- omitBy
39
- } from "@xylabs/sdk";
40
- import { Pool, spawn } from "@xylabs/threads/master";
41
- import { WasmSupport } from "@xyo-network/wasm";
42
- import { sha256 } from "hash-wasm";
43
-
44
- // src/removeEmptyFields.ts
45
- import { typeOf } from "@xylabs/sdk";
46
- var removeEmptyFields = (obj) => {
47
- if (obj == null) return obj;
48
- if (Array.isArray(obj)) {
49
- const arr = obj;
50
- return arr.map((value) => typeof value === "object" ? removeEmptyFields(value) : value);
51
- }
52
- const newObject = {};
53
- for (const [key, value] of Object.entries(obj)) {
54
- if (typeOf(value) === "object") {
55
- newObject[key] = removeEmptyFields(value);
56
- } else if (value !== void 0) {
57
- newObject[key] = value;
58
- }
59
- }
60
- return newObject;
61
- };
62
-
63
- // src/sortFields.ts
64
- import { isObject } from "@xylabs/sdk";
65
- var subSort = (value) => {
66
- return isObject(value) ? sortFields(value) : value;
67
- };
68
- var sortFields = (obj) => {
69
- const result = {};
70
- const keys = Object.keys(obj);
71
- for (const key of keys.toSorted()) {
72
- result[key] = subSort(obj[key]);
73
- }
74
- return result;
75
- };
76
-
77
- // src/worker/subtleHashNode.ts
78
- var subtleHashFunc = () => {
79
- const { subtle } = __require("@xylabs/platform");
80
- const { expose } = __require("@xylabs/threads/worker");
81
- expose({ hash: async (data) => await subtle.digest("SHA-256", data) });
82
- };
83
-
84
- // src/worker/wasmHashNode.ts
85
- var wasmHashFunc = () => {
86
- const { sha256: sha2562 } = __require("hash-wasm");
87
- const { asHash: asHash2 } = __require("@xylabs/hex");
88
- const { expose } = __require("@xylabs/threads/worker");
89
- expose({ hash: async (data) => asHash2(await sha2562(data), true) });
90
- };
91
-
92
- // src/ObjectHasher.ts
93
- var wasmSupportStatic = new WasmSupport(["bigInt"]);
94
- var omitByPredicate = (prefix) => (_, key) => {
95
- assertEx(typeof key === "string", () => `Invalid key type [${String(key)}, ${typeof key}]`);
96
- return String(key).startsWith(prefix);
97
- };
98
- var ObjectHasher = class _ObjectHasher extends ObjectWrapper {
99
- static allowHashPooling = true;
100
- static allowSubtle = true;
101
- static createBrowserWorker;
102
- static createNodeWorker;
103
- static subtleHashWorkerUrl;
104
- static warnIfUsingJsHash = true;
105
- static wasmHashWorkerUrl;
106
- static wasmInitialized = wasmSupportStatic.initialize();
107
- static wasmSupport = wasmSupportStatic;
108
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
- static _subtleHashPool;
110
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
- static _wasmHashPool;
112
- static get subtleHashPool() {
113
- if (!this.allowHashPooling || this._subtleHashPool === null) {
114
- return null;
115
- }
116
- try {
117
- return this._subtleHashPool = this._subtleHashPool ?? (this.subtleHashWorkerUrl ? this.createWorkerPool(this.subtleHashWorkerUrl, subtleHashFunc) : null);
118
- } catch {
119
- console.warn("Creating subtle hash worker failed");
120
- this._subtleHashPool = null;
121
- return null;
122
- }
123
- }
124
- static get wasmHashPool() {
125
- if (!this.allowHashPooling || this._wasmHashPool === null) {
126
- return null;
127
- }
128
- try {
129
- return this._wasmHashPool = this._wasmHashPool ?? (this.wasmHashWorkerUrl ? this.createWorkerPool(this.wasmHashWorkerUrl, wasmHashFunc) : null);
130
- } catch {
131
- console.warn("Creating wasm hash worker failed");
132
- this._wasmHashPool = null;
133
- return null;
134
- }
135
- }
136
- static createWorker(url, func) {
137
- if (url) console.debug(`createWorker: ${url.href}`);
138
- return assertEx(this.createBrowserWorker?.(url) ?? this.createNodeWorker?.(func), () => "Unable to create worker");
139
- }
140
- static async filterExcludeByHash(objs = [], hash) {
141
- const hashes = Array.isArray(hash) ? hash : [hash];
142
- const pairs = await this.hashPairs(objs);
143
- return pairs.filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0]);
144
- }
145
- static async filterIncludeByHash(objs = [], hash) {
146
- const hashes = Array.isArray(hash) ? hash : [hash];
147
- const pairs = await this.hashPairs(objs);
148
- return pairs.filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0]);
149
- }
150
- static async findByHash(objs = [], hash) {
151
- const pairs = await this.hashPairs(objs);
152
- return pairs.find(([_, objHash]) => objHash === hash)?.[0];
153
- }
154
- /**
155
- * Asynchronously hashes a payload
156
- * @param obj A payload
157
- * @returns The payload hash
158
- */
159
- static async hash(obj) {
160
- const stringToHash = this.stringifyHashFields(obj);
161
- const enc = new TextEncoder();
162
- const data = enc.encode(stringToHash);
163
- if (_ObjectHasher.allowSubtle) {
164
- try {
165
- const hashArray = await this.subtleHash(data);
166
- return hexFromArrayBuffer(hashArray, { bitLength: 256 });
167
- } catch {
168
- _ObjectHasher.allowSubtle = false;
169
- }
170
- }
171
- await this.wasmInitialized;
172
- if (_ObjectHasher.wasmSupport.canUseWasm) {
173
- try {
174
- return await this.wasmHash(data);
175
- } catch {
176
- _ObjectHasher.wasmSupport.allowWasm = false;
177
- }
178
- }
179
- throw new Error("No subtle or wasm hashing available");
180
- }
181
- static async hashBytes(bytes) {
182
- const bytesArray = new Uint8Array(bytes);
183
- if (_ObjectHasher.allowSubtle) {
184
- const hashArray = await this.subtleHash(bytesArray);
185
- return hexFromArrayBuffer(hashArray, { bitLength: 256 });
186
- }
187
- await this.wasmInitialized;
188
- if (_ObjectHasher.wasmSupport.canUseWasm) {
189
- return await this.wasmHash(bytesArray);
190
- }
191
- throw new Error("No subtle or wasm hashing available");
192
- }
193
- static hashFields(obj) {
194
- const filtered = omitBy(obj, omitByPredicate("_"));
195
- const cleaned = removeEmptyFields(filtered);
196
- return sortFields(cleaned);
197
- }
198
- /**
199
- * Creates an array of payload/hash tuples based on the payloads passed in
200
- * @param objs Any array of payloads
201
- * @returns An array of payload/hash tuples
202
- */
203
- static async hashPairs(objs) {
204
- return await Promise.all(objs.map(async (obj) => [obj, await this.hash(obj)]));
205
- }
206
- /**
207
- * Creates an array of payload hashes based on the payloads passed in
208
- * @param objs Any array of payloads
209
- * @returns An array of payload hashes
210
- */
211
- static async hashes(objs) {
212
- return objs ? await Promise.all(objs.map((obj) => this.hash(obj))) : void 0;
213
- }
214
- /**
215
- * Returns a clone of the payload that is JSON safe
216
- * @param obj A payload
217
- * @param meta Keeps underscore (meta) fields if set to true
218
- * @returns Returns a clone of the payload that is JSON safe
219
- */
220
- static json(payload, meta = false) {
221
- const source = meta ? payload : omitBy(payload, omitByPredicate("_"));
222
- const cleaned = removeEmptyFields(source);
223
- return sortFields(cleaned);
224
- }
225
- /** @deprecated us JSON instead */
226
- static jsonPayload(payload, meta = false) {
227
- return this.json(payload, meta);
228
- }
229
- static stringifyHashFields(obj) {
230
- return JSON.stringify(this.hashFields(obj));
231
- }
232
- static async subtleHash(data) {
233
- const pool = this.subtleHashPool;
234
- if (pool === null) return await globalThis.crypto.subtle.digest("SHA-256", data);
235
- const result = await pool.queue(async (thread) => await thread.hash(data));
236
- return result;
237
- }
238
- static async wasmHash(data) {
239
- const pool = this.wasmHashPool;
240
- if (pool === null) return asHash(await sha256(data), true);
241
- const result = await pool.queue(async (thread) => await thread.hash(data));
242
- return result;
243
- }
244
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
245
- static createWorkerPool(url, func, size = 8) {
246
- if (url) console.debug(`createWorkerPool: ${url.href}`);
247
- const createFunc = () => spawn(this.createWorker(url, func));
248
- return Pool(createFunc, size);
249
- }
250
- async hash() {
251
- return await _ObjectHasher.hash(this.obj);
252
- }
253
- /**
254
- * Returns a clone of the payload that is JSON safe
255
- * @param meta Keeps underscore (meta) fields if set to true
256
- * @returns Returns a clone of the payload that is JSON safe
257
- */
258
- json(meta = false) {
259
- return _ObjectHasher.json(this.obj, meta);
260
- }
261
- };
262
-
263
- // src/BrowserObjectHasher.ts
264
- ObjectHasher.createBrowserWorker = createBrowserWorker;
265
- ObjectHasher.createNodeWorker = createNodeWorker;
266
- var BrowserObjectHasher = class extends ObjectHasher {
267
- static createBrowserWorker = createBrowserWorker;
268
- static createNodeWorker = createNodeWorker;
269
- static subtleHashWorkerUrl = (() => {
270
- try {
271
- return new URL("worker/subtleHash-bundle.mjs", import.meta.url);
272
- } catch {
273
- return;
274
- }
275
- })();
276
- static wasmHashWorkerUrl = (() => {
277
- try {
278
- return new URL("worker/wasmHash-bundle.mjs", import.meta.url);
279
- } catch {
280
- return;
281
- }
282
- })();
283
- };
284
- export {
285
- BrowserObjectHasher as ObjectHasher,
286
- removeEmptyFields,
287
- sortFields
288
- };
289
- //# sourceMappingURL=index-browser.mjs.map