@ic-reactor/core 3.0.3-beta.4 → 3.0.3

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 (65) hide show
  1. package/README.md +6 -4
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +2 -3
  4. package/dist/client.js.map +1 -1
  5. package/dist/display/types.d.ts +4 -2
  6. package/dist/display/types.d.ts.map +1 -1
  7. package/dist/display/visitor.d.ts +2 -1
  8. package/dist/display/visitor.d.ts.map +1 -1
  9. package/dist/display/visitor.js +146 -121
  10. package/dist/display/visitor.js.map +1 -1
  11. package/dist/display-reactor.d.ts +9 -41
  12. package/dist/display-reactor.d.ts.map +1 -1
  13. package/dist/display-reactor.js +5 -41
  14. package/dist/display-reactor.js.map +1 -1
  15. package/dist/reactor.d.ts +17 -1
  16. package/dist/reactor.d.ts.map +1 -1
  17. package/dist/reactor.js +60 -44
  18. package/dist/reactor.js.map +1 -1
  19. package/dist/types/display-reactor.d.ts +2 -2
  20. package/dist/types/display-reactor.d.ts.map +1 -1
  21. package/dist/types/reactor.d.ts +8 -9
  22. package/dist/types/reactor.d.ts.map +1 -1
  23. package/dist/types/transform.d.ts +1 -1
  24. package/dist/types/transform.d.ts.map +1 -1
  25. package/dist/utils/helper.d.ts +20 -1
  26. package/dist/utils/helper.d.ts.map +1 -1
  27. package/dist/utils/helper.js +37 -6
  28. package/dist/utils/helper.js.map +1 -1
  29. package/dist/utils/index.d.ts +1 -0
  30. package/dist/utils/index.d.ts.map +1 -1
  31. package/dist/utils/index.js +1 -0
  32. package/dist/utils/index.js.map +1 -1
  33. package/dist/utils/zod.d.ts +34 -0
  34. package/dist/utils/zod.d.ts.map +1 -0
  35. package/dist/utils/zod.js +39 -0
  36. package/dist/utils/zod.js.map +1 -0
  37. package/dist/version.d.ts +1 -1
  38. package/dist/version.d.ts.map +1 -1
  39. package/dist/version.js +2 -1
  40. package/dist/version.js.map +1 -1
  41. package/package.json +7 -6
  42. package/src/client.ts +571 -0
  43. package/src/display/helper.ts +92 -0
  44. package/src/display/index.ts +3 -0
  45. package/src/display/types.ts +91 -0
  46. package/src/display/visitor.ts +415 -0
  47. package/src/display-reactor.ts +361 -0
  48. package/src/errors/index.ts +246 -0
  49. package/src/index.ts +8 -0
  50. package/src/reactor.ts +461 -0
  51. package/src/types/client.ts +110 -0
  52. package/src/types/display-reactor.ts +73 -0
  53. package/src/types/index.ts +6 -0
  54. package/src/types/reactor.ts +188 -0
  55. package/src/types/result.ts +50 -0
  56. package/src/types/transform.ts +29 -0
  57. package/src/types/variant.ts +39 -0
  58. package/src/utils/agent.ts +201 -0
  59. package/src/utils/candid.ts +112 -0
  60. package/src/utils/constants.ts +12 -0
  61. package/src/utils/helper.ts +155 -0
  62. package/src/utils/index.ts +5 -0
  63. package/src/utils/polling.ts +330 -0
  64. package/src/utils/zod.ts +56 -0
  65. package/src/version.ts +5 -0
@@ -22,6 +22,21 @@ export const getProcessEnvNetwork = () => {
22
22
  else
23
23
  return process.env.DFX_NETWORK ?? "ic";
24
24
  };
25
+ /**
26
+ * Detect whether the runtime should be considered *development*.
27
+ *
28
+ * Checks in order:
29
+ * - `import.meta.env?.DEV` (Vite / ESM environments)
30
+ * - `process.env.NODE_ENV === 'development'` (Node)
31
+ * - `process.env.DFX_NETWORK === 'local'` (local IC replica)
32
+ */
33
+ export const isDev = () => {
34
+ const importMetaDev = typeof import.meta !== "undefined" && import.meta.env?.DEV;
35
+ const nodeDev = typeof process !== "undefined" &&
36
+ (process.env.NODE_ENV === "development" ||
37
+ process.env.DFX_NETWORK === "local");
38
+ return Boolean(importMetaDev || nodeDev);
39
+ };
25
40
  /**
26
41
  * Determines the network type based on the provided hostname.
27
42
  *
@@ -73,17 +88,33 @@ export function extractOkResult(result) {
73
88
  }
74
89
  export const isNullish = (value) => value === null || value === undefined;
75
90
  export const nonNullish = (value) => value !== null && value !== undefined;
91
+ /**
92
+ * Converts a Uint8Array or number array to a hex string (without 0x prefix)
93
+ */
76
94
  export const uint8ArrayToHex = (bytes) => {
77
- const hex = Array.from(bytes)
95
+ return Array.from(bytes)
78
96
  .map((b) => b.toString(16).padStart(2, "0"))
79
97
  .join("");
80
- return `0x${hex}`;
81
98
  };
99
+ /**
100
+ * Converts a hex string to Uint8Array (accepts with or without 0x prefix)
101
+ */
82
102
  export const hexToUint8Array = (hex) => {
83
- if (hex.startsWith("0x")) {
84
- hex = hex.slice(2);
85
- }
86
- return new Uint8Array(hex.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16)) || []);
103
+ // Normalize: remove 0x prefix if present and filter invalid chars
104
+ const normalized = hex
105
+ .replace(/^0x/i, "")
106
+ .replace(/[^0-9a-f]/gi, "")
107
+ .toLowerCase();
108
+ // Handle odd-length hex strings by padding with leading zero
109
+ const paddedHex = normalized.length % 2 ? `0${normalized}` : normalized;
110
+ return new Uint8Array(paddedHex.match(/.{2}/g)?.map((byte) => parseInt(byte, 16)) ?? []);
111
+ };
112
+ /**
113
+ * Formats hex string with 0x prefix for display purposes
114
+ */
115
+ export const formatHexDisplay = (hex) => {
116
+ const normalized = hex.replace(/^0x/i, "");
117
+ return `0x${normalized}`;
87
118
  };
88
119
  /**
89
120
  * Converts a JSON-serializable value to a string, handling BigInt values.
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../src/utils/helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../src/utils/helper.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export * from "./candid";
2
2
  export * from "./constants";
3
3
  export * from "./helper";
4
4
  export * from "./polling";
5
+ export * from "./zod";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA"}
@@ -2,4 +2,5 @@ export * from "./candid";
2
2
  export * from "./constants";
3
3
  export * from "./helper";
4
4
  export * from "./polling";
5
+ export * from "./zod";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { Validator } from "../types";
2
+ /**
3
+ * Create a validator from a Zod schema.
4
+ * This is a utility function to easily integrate Zod schemas as validators.
5
+ *
6
+ * @param schema - A Zod schema to validate against
7
+ * @returns A Validator function compatible with DisplayReactor
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { z } from "zod"
12
+ * import { fromZodSchema } from "@ic-reactor/core"
13
+ *
14
+ * const transferSchema = z.object({
15
+ * to: z.string().min(1, "Recipient is required"),
16
+ * amount: z.string().regex(/^\d+$/, "Must be a valid number"),
17
+ * })
18
+ *
19
+ * reactor.registerValidator("transfer", fromZodSchema(transferSchema))
20
+ * ```
21
+ */
22
+ export declare function fromZodSchema<T>(schema: {
23
+ safeParse: (data: unknown) => {
24
+ success: boolean;
25
+ error?: {
26
+ issues: Array<{
27
+ path: (string | number)[];
28
+ message: string;
29
+ code?: string;
30
+ }>;
31
+ };
32
+ };
33
+ }): Validator<T[]>;
34
+ //# sourceMappingURL=zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/utils/zod.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,SAAS,EAAE,MAAM,UAAU,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE;IACvC,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK;QAC5B,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,CAAC,EAAE;YACN,MAAM,EAAE,KAAK,CAAC;gBACZ,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;gBACzB,OAAO,EAAE,MAAM,CAAA;gBACf,IAAI,CAAC,EAAE,MAAM,CAAA;aACd,CAAC,CAAA;SACH,CAAA;KACF,CAAA;CACF,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAiBjB"}
@@ -0,0 +1,39 @@
1
+ // ============================================================================
2
+ // Zod Integration Helper
3
+ // ============================================================================
4
+ /**
5
+ * Create a validator from a Zod schema.
6
+ * This is a utility function to easily integrate Zod schemas as validators.
7
+ *
8
+ * @param schema - A Zod schema to validate against
9
+ * @returns A Validator function compatible with DisplayReactor
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { z } from "zod"
14
+ * import { fromZodSchema } from "@ic-reactor/core"
15
+ *
16
+ * const transferSchema = z.object({
17
+ * to: z.string().min(1, "Recipient is required"),
18
+ * amount: z.string().regex(/^\d+$/, "Must be a valid number"),
19
+ * })
20
+ *
21
+ * reactor.registerValidator("transfer", fromZodSchema(transferSchema))
22
+ * ```
23
+ */
24
+ export function fromZodSchema(schema) {
25
+ return (args) => {
26
+ // Validate the first argument (common IC pattern)
27
+ const result = schema.safeParse(args[0]);
28
+ if (result.success) {
29
+ return { success: true };
30
+ }
31
+ const issues = result.error.issues.map((issue) => ({
32
+ path: issue.path,
33
+ message: issue.message,
34
+ code: issue.code,
35
+ }));
36
+ return { success: false, issues };
37
+ };
38
+ }
39
+ //# sourceMappingURL=zod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.js","sourceRoot":"","sources":["../../src/utils/zod.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAK/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAAI,MAWhC;IACC,OAAO,CAAC,IAAS,EAAoB,EAAE;QACrC,kDAAkD;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAExC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;QAED,MAAM,MAAM,GAAsB,MAAM,CAAC,KAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrE,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC,CAAA;QAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IACnC,CAAC,CAAA;AACH,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Library version - automatically synced from package.json.
3
3
  */
4
- export declare const VERSION = "3.0.0";
4
+ export declare const VERSION: string;
5
5
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,OAAO,UAAU,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,eAAO,MAAM,OAAO,QAAU,CAAA"}
package/dist/version.js CHANGED
@@ -1,5 +1,6 @@
1
+ import { version } from "../package.json";
1
2
  /**
2
3
  * Library version - automatically synced from package.json.
3
4
  */
4
- export const VERSION = "3.0.0";
5
+ export const VERSION = version;
5
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ic-reactor/core",
3
- "version": "3.0.3-beta.4",
3
+ "version": "3.0.3",
4
4
  "description": "IC Reactor Core Library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -16,6 +16,7 @@
16
16
  },
17
17
  "files": [
18
18
  "dist",
19
+ "src",
19
20
  "README.md"
20
21
  ],
21
22
  "repository": {
@@ -41,10 +42,10 @@
41
42
  "author": "Behrad Deylami",
42
43
  "license": "MIT",
43
44
  "dependencies": {
44
- "@noble/curves": "^2.0.1",
45
- "zod": "^4.3.5"
45
+ "zod": "^4.3.6"
46
46
  },
47
47
  "peerDependencies": {
48
+ "zod": "^4.3.5",
48
49
  "@icp-sdk/core": "^5.0.0",
49
50
  "@icp-sdk/auth": "^5.0.0",
50
51
  "@tanstack/query-core": "^5.0.0"
@@ -63,10 +64,10 @@
63
64
  "@size-limit/preset-small-lib": "^12.0.0",
64
65
  "@tanstack/query-core": "^5.90",
65
66
  "@tanstack/react-query": "^5.90",
66
- "@types/node": "^25.0.6",
67
+ "@types/node": "^25.3.0",
67
68
  "fake-indexeddb": "^6.2.5",
68
69
  "size-limit": "^12.0.0",
69
- "vitest": "^4.0.17"
70
+ "vitest": "^4.0.18"
70
71
  },
71
72
  "size-limit": [
72
73
  {
@@ -81,6 +82,6 @@
81
82
  "test": "vitest run",
82
83
  "version:sync": "node -e \"const pkg = require('./package.json'); const fs = require('fs'); fs.writeFileSync('./src/version.ts', '/**\\n * Library version - automatically synced from package.json.\\n */\\nexport const VERSION = \\\"' + pkg.version + '\\\"\\n');\"",
83
84
  "size": "size-limit",
84
- "analyze": "size-limit --why"
85
+ "analyze": "size-limit"
85
86
  }
86
87
  }