@ic-reactor/candid 3.0.7-beta.2 → 3.0.8-beta.1

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 (53) hide show
  1. package/dist/display-reactor.d.ts +3 -2
  2. package/dist/display-reactor.d.ts.map +1 -1
  3. package/dist/display-reactor.js +6 -0
  4. package/dist/display-reactor.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/metadata-display-reactor.d.ts +73 -0
  10. package/dist/metadata-display-reactor.d.ts.map +1 -0
  11. package/dist/metadata-display-reactor.js +128 -0
  12. package/dist/metadata-display-reactor.js.map +1 -0
  13. package/dist/visitor/arguments/index.d.ts +69 -0
  14. package/dist/visitor/arguments/index.d.ts.map +1 -0
  15. package/dist/visitor/arguments/index.js +277 -0
  16. package/dist/visitor/arguments/index.js.map +1 -0
  17. package/dist/visitor/arguments/types.d.ts +92 -0
  18. package/dist/visitor/arguments/types.d.ts.map +1 -0
  19. package/dist/visitor/arguments/types.js +2 -0
  20. package/dist/visitor/arguments/types.js.map +1 -0
  21. package/dist/visitor/constants.d.ts +4 -0
  22. package/dist/visitor/constants.d.ts.map +1 -0
  23. package/dist/visitor/constants.js +61 -0
  24. package/dist/visitor/constants.js.map +1 -0
  25. package/dist/visitor/helpers.d.ts +30 -0
  26. package/dist/visitor/helpers.d.ts.map +1 -0
  27. package/dist/visitor/helpers.js +200 -0
  28. package/dist/visitor/helpers.js.map +1 -0
  29. package/dist/visitor/returns/index.d.ts +76 -0
  30. package/dist/visitor/returns/index.d.ts.map +1 -0
  31. package/dist/visitor/returns/index.js +426 -0
  32. package/dist/visitor/returns/index.js.map +1 -0
  33. package/dist/visitor/returns/types.d.ts +143 -0
  34. package/dist/visitor/returns/types.d.ts.map +1 -0
  35. package/dist/visitor/returns/types.js +2 -0
  36. package/dist/visitor/returns/types.js.map +1 -0
  37. package/dist/visitor/types.d.ts +6 -0
  38. package/dist/visitor/types.d.ts.map +1 -0
  39. package/dist/visitor/types.js +3 -0
  40. package/dist/visitor/types.js.map +1 -0
  41. package/package.json +3 -2
  42. package/src/display-reactor.ts +10 -2
  43. package/src/index.ts +1 -0
  44. package/src/metadata-display-reactor.ts +184 -0
  45. package/src/visitor/arguments/index.test.ts +882 -0
  46. package/src/visitor/arguments/index.ts +405 -0
  47. package/src/visitor/arguments/types.ts +168 -0
  48. package/src/visitor/constants.ts +62 -0
  49. package/src/visitor/helpers.ts +221 -0
  50. package/src/visitor/returns/index.test.ts +2027 -0
  51. package/src/visitor/returns/index.ts +553 -0
  52. package/src/visitor/returns/types.ts +272 -0
  53. package/src/visitor/types.ts +29 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/visitor/arguments/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import type { BaseActor, FunctionName, FunctionType } from "@ic-reactor/core";
2
+ export type ArgumentFieldType = "record" | "variant" | "tuple" | "optional" | "vector" | "blob" | "recursive" | "principal" | "number" | "text" | "boolean" | "null" | "unknown";
3
+ export interface ArgumentFieldBase {
4
+ /** The field type */
5
+ type: ArgumentFieldType;
6
+ /** Human-readable label from Candid */
7
+ label: string;
8
+ /** Dot-notation path for form binding (e.g., "0.owner", "[0].to") */
9
+ path: string;
10
+ }
11
+ export interface RecordArgumentField extends ArgumentFieldBase {
12
+ type: "record";
13
+ fields: ArgumentField[];
14
+ defaultValues: Record<string, unknown>;
15
+ }
16
+ export interface VariantArgumentField extends ArgumentFieldBase {
17
+ type: "variant";
18
+ fields: ArgumentField[];
19
+ options: string[];
20
+ defaultOption: string;
21
+ defaultValues: Record<string, unknown>;
22
+ }
23
+ export interface TupleArgumentField extends ArgumentFieldBase {
24
+ type: "tuple";
25
+ fields: ArgumentField[];
26
+ defaultValues: unknown[];
27
+ }
28
+ export interface OptionalArgumentField extends ArgumentFieldBase {
29
+ type: "optional";
30
+ innerField: ArgumentField;
31
+ defaultValue: null;
32
+ }
33
+ export interface VectorArgumentField extends ArgumentFieldBase {
34
+ type: "vector";
35
+ itemField: ArgumentField;
36
+ defaultValue: [];
37
+ }
38
+ export interface BlobArgumentField extends ArgumentFieldBase {
39
+ type: "blob";
40
+ itemField: ArgumentField;
41
+ /** Default is empty hex string */
42
+ defaultValue: string;
43
+ }
44
+ export interface RecursiveArgumentField extends ArgumentFieldBase {
45
+ type: "recursive";
46
+ /** Lazily extract the inner field to prevent infinite loops */
47
+ extract: () => ArgumentField;
48
+ }
49
+ export interface PrincipalArgumentField extends ArgumentFieldBase {
50
+ type: "principal";
51
+ /** Display format: string */
52
+ defaultValue: string;
53
+ maxLength: number;
54
+ minLength: number;
55
+ }
56
+ export interface NumberArgumentField extends ArgumentFieldBase {
57
+ type: "number";
58
+ /** Display format: string (for bigint compatibility) */
59
+ defaultValue: string;
60
+ /** Original Candid type: nat, int, nat64, etc. */
61
+ candidType: string;
62
+ }
63
+ export interface TextArgumentField extends ArgumentFieldBase {
64
+ type: "text";
65
+ defaultValue: string;
66
+ }
67
+ export interface BooleanArgumentField extends ArgumentFieldBase {
68
+ type: "boolean";
69
+ defaultValue: boolean;
70
+ }
71
+ export interface NullArgumentField extends ArgumentFieldBase {
72
+ type: "null";
73
+ defaultValue: null;
74
+ }
75
+ export interface UnknownArgumentField extends ArgumentFieldBase {
76
+ type: "unknown";
77
+ defaultValue: undefined;
78
+ }
79
+ export type ArgumentField = RecordArgumentField | VariantArgumentField | TupleArgumentField | OptionalArgumentField | VectorArgumentField | BlobArgumentField | RecursiveArgumentField | PrincipalArgumentField | NumberArgumentField | TextArgumentField | BooleanArgumentField | NullArgumentField | UnknownArgumentField;
80
+ export interface MethodArgumentsMeta<A = BaseActor, Name extends FunctionName<A> = FunctionName<A>> {
81
+ functionType: FunctionType;
82
+ functionName: Name;
83
+ fields: ArgumentField[];
84
+ defaultValues: unknown[];
85
+ }
86
+ export type ServiceArgumentsMeta<A = BaseActor> = {
87
+ [K in FunctionName<A>]: MethodArgumentsMeta<A, K>;
88
+ };
89
+ export type ArgumentFieldByType<T extends ArgumentFieldType> = Extract<ArgumentField, {
90
+ type: T;
91
+ }>;
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/visitor/arguments/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/visitor/arguments/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { TextFormat, NumberFormat } from "./returns/types";
2
+ export declare const checkTextFormat: (label?: string) => TextFormat;
3
+ export declare const checkNumberFormat: (label?: string) => NumberFormat;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/visitor/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AA0C/D,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,UAYhD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,YAKlD,CAAA"}
@@ -0,0 +1,61 @@
1
+ const TAMESTAMP_KEYS = [
2
+ "time",
3
+ "date",
4
+ "deadline",
5
+ "timestamp",
6
+ "timestamp_nanos",
7
+ "statusAt",
8
+ "createdAt",
9
+ "updatedAt",
10
+ "deletedAt",
11
+ "validUntil",
12
+ "status_at",
13
+ "created_at",
14
+ "updated_at",
15
+ "deleted_at",
16
+ "valid_until",
17
+ ];
18
+ const TAMESTAMP_KEYS_REGEX = new RegExp(TAMESTAMP_KEYS.map((key) => `^[\\w-]*${key}[\\w-]*$`).join("|"), "i");
19
+ const CYCLE_KEYS = ["cycle", "cycles"];
20
+ const CYCLE_KEYS_REGEX = new RegExp(CYCLE_KEYS.map((key) => `^[\\w-]*${key}[\\w-]*$`).join("|"), "i");
21
+ const EMAIL_KEYS_REGEX = /email|mail/i;
22
+ const PHONE_KEYS_REGEX = /phone|tel|mobile/i;
23
+ const URL_KEYS_REGEX = /url|link|website/i;
24
+ const UUID_KEYS_REGEX = /uuid|guid/i;
25
+ const BITCOIN_KEYS_REGEX = /bitcoin|btc/i;
26
+ const ETHEREUM_KEYS_REGEX = /ethereum|eth/i;
27
+ const ACCOUNT_ID_KEYS_REGEX = /account_id|account_identifier|ledger_account|block_hash|transaction_hash|tx_hash/i;
28
+ const PRINCIPAL_KEYS_REGEX = /canister|principal/i;
29
+ export const checkTextFormat = (label) => {
30
+ if (!label)
31
+ return "plain";
32
+ if (TAMESTAMP_KEYS_REGEX.test(label))
33
+ return "timestamp";
34
+ if (EMAIL_KEYS_REGEX.test(label))
35
+ return "email";
36
+ if (PHONE_KEYS_REGEX.test(label))
37
+ return "phone";
38
+ if (URL_KEYS_REGEX.test(label))
39
+ return "url";
40
+ if (UUID_KEYS_REGEX.test(label))
41
+ return "uuid";
42
+ if (BITCOIN_KEYS_REGEX.test(label))
43
+ return "btc";
44
+ if (ETHEREUM_KEYS_REGEX.test(label))
45
+ return "eth";
46
+ if (ACCOUNT_ID_KEYS_REGEX.test(label))
47
+ return "account-id";
48
+ if (PRINCIPAL_KEYS_REGEX.test(label))
49
+ return "principal";
50
+ return "plain";
51
+ };
52
+ export const checkNumberFormat = (label) => {
53
+ if (!label)
54
+ return "normal";
55
+ if (TAMESTAMP_KEYS_REGEX.test(label))
56
+ return "timestamp";
57
+ if (CYCLE_KEYS_REGEX.test(label))
58
+ return "cycle";
59
+ return "normal";
60
+ };
61
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/visitor/constants.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG;IACrB,MAAM;IACN,MAAM;IACN,UAAU;IACV,WAAW;IACX,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,aAAa;CACd,CAAA;AAED,MAAM,oBAAoB,GAAG,IAAI,MAAM,CACrC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC/D,GAAG,CACJ,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAEtC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CACjC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC3D,GAAG,CACJ,CAAA;AAED,MAAM,gBAAgB,GAAG,aAAa,CAAA;AACtC,MAAM,gBAAgB,GAAG,mBAAmB,CAAA;AAC5C,MAAM,cAAc,GAAG,mBAAmB,CAAA;AAC1C,MAAM,eAAe,GAAG,YAAY,CAAA;AACpC,MAAM,kBAAkB,GAAG,cAAc,CAAA;AACzC,MAAM,mBAAmB,GAAG,eAAe,CAAA;AAC3C,MAAM,qBAAqB,GACzB,mFAAmF,CAAA;AACrF,MAAM,oBAAoB,GAAG,qBAAqB,CAAA;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAc,EAAE;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAA;IAC1B,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAA;IACxD,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAA;IAChD,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAA;IAChD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAA;IAC9C,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAA;IAC1D,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAA;IACxD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAgB,EAAE;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAA;IAC3B,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAA;IACxD,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAA;IAChD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { IDL } from "./types";
2
+ export declare const extractAndSortArgs: <T extends Record<string, unknown>>(argsObject: T) => Array<T[keyof T]>;
3
+ /**
4
+ * Normalize form state by converting objects with numeric string keys to arrays.
5
+ * TanStack Form sometimes creates { "0": value, "1": value } instead of [value, value]
6
+ * when using indexed field paths like "parent.0.child".
7
+ *
8
+ * This function also handles the variant cleanup case where objects have mixed
9
+ * numeric and named keys (e.g., { "0": old, "Add": current }) by removing
10
+ * orphaned numeric keys.
11
+ *
12
+ * This function recursively processes the form state and fixes these issues.
13
+ */
14
+ export declare const normalizeFormState: <T>(value: T) => T;
15
+ export declare const convertNanoToDate: (nano: bigint) => Date;
16
+ export declare const convertToCycle: (cycles: bigint) => string;
17
+ export declare const convertStringToNumber: (value: string) => number | bigint;
18
+ export declare const validateNumberError: (t: IDL.Type) => (value: string) => string | true;
19
+ export declare const validateError: (t: IDL.Type) => (value: unknown) => string | true;
20
+ export declare function isQuery(func: IDL.FuncClass): boolean;
21
+ export declare function isUrl(str: string): boolean;
22
+ export declare function isImage(str: string): boolean;
23
+ export declare function isUuid(str: string): boolean;
24
+ export declare function isCanisterId(str: string): boolean;
25
+ export declare function isBtcAddress(str: string): boolean;
26
+ export declare function isEthAddress(str: string): boolean;
27
+ export declare function isAccountIdentifier(str: string): boolean;
28
+ export declare function isIsoDate(str: string): boolean;
29
+ export declare function uint8ArrayToHexString(bytes: Uint8Array | number[]): string;
30
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/visitor/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAE7B,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,YAAY,CAAC,KACZ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAYlB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAgDhD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,SAE7C,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,WAO5C,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,oBAOlD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,GAAG,GAAG,CAAC,IAAI,MACpB,OAAO,MAAM,kBAwBvC,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,GAAG,GAAG,CAAC,IAAI,MACd,OAAO,OAAO,kBAQxC,CAAA;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,GAAG,OAAO,CAKpD;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG1C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgB5C;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAK3C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOjD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIxD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO9C;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM,CAQ1E"}
@@ -0,0 +1,200 @@
1
+ export const extractAndSortArgs = (argsObject) => {
2
+ if (!argsObject || typeof argsObject !== "object")
3
+ return [];
4
+ const args = [];
5
+ let index = 0;
6
+ while (Object.prototype.hasOwnProperty.call(argsObject, `arg${index}`)) {
7
+ args.push(argsObject[`arg${index}`]);
8
+ index++;
9
+ }
10
+ return args;
11
+ };
12
+ /**
13
+ * Normalize form state by converting objects with numeric string keys to arrays.
14
+ * TanStack Form sometimes creates { "0": value, "1": value } instead of [value, value]
15
+ * when using indexed field paths like "parent.0.child".
16
+ *
17
+ * This function also handles the variant cleanup case where objects have mixed
18
+ * numeric and named keys (e.g., { "0": old, "Add": current }) by removing
19
+ * orphaned numeric keys.
20
+ *
21
+ * This function recursively processes the form state and fixes these issues.
22
+ */
23
+ export const normalizeFormState = (value) => {
24
+ // Handle null/undefined
25
+ if (value === null || value === undefined) {
26
+ return value;
27
+ }
28
+ // Handle arrays - recursively normalize each element
29
+ if (Array.isArray(value)) {
30
+ return value.map(normalizeFormState);
31
+ }
32
+ // Handle objects
33
+ if (typeof value === "object") {
34
+ const obj = value;
35
+ const keys = Object.keys(obj);
36
+ // Separate numeric and non-numeric keys
37
+ const numericKeys = keys.filter((k) => /^\d+$/.test(k));
38
+ const namedKeys = keys.filter((k) => !/^\d+$/.test(k));
39
+ // Case 1: All keys are numeric - convert to array
40
+ if (numericKeys.length > 0 && namedKeys.length === 0) {
41
+ const sortedNums = numericKeys.map(Number).sort((a, b) => a - b);
42
+ // Check if keys are consecutive starting from 0
43
+ if (sortedNums.every((num, idx) => num === idx)) {
44
+ return sortedNums.map((k) => normalizeFormState(obj[String(k)]));
45
+ }
46
+ }
47
+ // Case 2: Mixed keys (variant case) - keep only named keys, remove orphan numeric keys
48
+ if (numericKeys.length > 0 && namedKeys.length > 0) {
49
+ const result = {};
50
+ for (const key of namedKeys) {
51
+ result[key] = normalizeFormState(obj[key]);
52
+ }
53
+ return result;
54
+ }
55
+ // Case 3: All named keys - recursively normalize all values
56
+ const result = {};
57
+ for (const [key, val] of Object.entries(obj)) {
58
+ result[key] = normalizeFormState(val);
59
+ }
60
+ return result;
61
+ }
62
+ // Return primitives as-is
63
+ return value;
64
+ };
65
+ export const convertNanoToDate = (nano) => {
66
+ return new Date(Number(nano) / 1000000);
67
+ };
68
+ export const convertToCycle = (cycles) => {
69
+ const mcycles = cycles / BigInt(1000000);
70
+ if (mcycles >= BigInt(1000000)) {
71
+ const tcycles = mcycles / BigInt(1000000);
72
+ return `${tcycles.toLocaleString()} T`;
73
+ }
74
+ return `${mcycles.toLocaleString()} M`;
75
+ };
76
+ export const convertStringToNumber = (value) => {
77
+ const bits = value.length;
78
+ if (bits >= 16) {
79
+ return BigInt(value);
80
+ }
81
+ else {
82
+ return Number(value);
83
+ }
84
+ };
85
+ export const validateNumberError = (t) => {
86
+ return function validate(value) {
87
+ if (value === "") {
88
+ return true;
89
+ }
90
+ const bits = value.length;
91
+ if (bits >= 16) {
92
+ try {
93
+ const valueAsBigInt = BigInt(value);
94
+ t.covariant(valueAsBigInt);
95
+ return true;
96
+ }
97
+ catch (error) {
98
+ return error.message || "Failed to convert to BigInt";
99
+ }
100
+ }
101
+ else {
102
+ try {
103
+ const valueAsNumber = Number(value);
104
+ t.covariant(valueAsNumber);
105
+ return true;
106
+ }
107
+ catch (error) {
108
+ return error.message || "Failed to convert to number";
109
+ }
110
+ }
111
+ };
112
+ };
113
+ export const validateError = (t) => {
114
+ return function validate(value) {
115
+ try {
116
+ t.covariant(value);
117
+ return true;
118
+ }
119
+ catch (error) {
120
+ return error.message || "An error occurred";
121
+ }
122
+ };
123
+ };
124
+ export function isQuery(func) {
125
+ return (func.annotations.includes("query") ||
126
+ func.annotations.includes("composite_query"));
127
+ }
128
+ export function isUrl(str) {
129
+ if (typeof str !== "string")
130
+ return false;
131
+ return str.startsWith("http") || str.startsWith("https");
132
+ }
133
+ export function isImage(str) {
134
+ if (typeof str !== "string")
135
+ return false;
136
+ // Check if the string starts with 'data:image' (indicating base64-encoded image)
137
+ if (str.startsWith("data:image")) {
138
+ return true;
139
+ }
140
+ // List of common image file extensions
141
+ const imageExtensions = [".jpg", ".jpeg", ".png", ".gif", ".svg"];
142
+ // Check if the string ends with any of the image extensions (indicating image URL)
143
+ if (imageExtensions.some((ext) => str.endsWith(ext))) {
144
+ return true;
145
+ }
146
+ return false;
147
+ }
148
+ export function isUuid(str) {
149
+ if (typeof str !== "string")
150
+ return false;
151
+ return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(str);
152
+ }
153
+ export function isCanisterId(str) {
154
+ if (typeof str !== "string")
155
+ return false;
156
+ if (str.length !== 27)
157
+ return false;
158
+ // All canister IDs end with "-cai"
159
+ return str.endsWith("-cai");
160
+ }
161
+ export function isBtcAddress(str) {
162
+ if (typeof str !== "string")
163
+ return false;
164
+ // Bech32 (Mainnet: bc1, Testnet: tb1, Regtest: bcrt1)
165
+ if (/^(bc1|tb1|bcrt1)[a-zA-HJ-NP-Z0-9]{25,60}$/.test(str))
166
+ return true;
167
+ // Base58 (Mainnet: 1/3, Testnet: m/n/2)
168
+ if (/^[13mn2][a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(str))
169
+ return true;
170
+ return false;
171
+ }
172
+ export function isEthAddress(str) {
173
+ if (typeof str !== "string")
174
+ return false;
175
+ return /^0x[a-fA-F0-9]{40}$/.test(str);
176
+ }
177
+ export function isAccountIdentifier(str) {
178
+ if (typeof str !== "string")
179
+ return false;
180
+ // 64 characters hex string (standard for ICP account ids and hashes)
181
+ return /^[a-fA-F0-9]{64}$/.test(str);
182
+ }
183
+ export function isIsoDate(str) {
184
+ if (typeof str !== "string")
185
+ return false;
186
+ // Basic ISO 8601 / RFC 3339 format check
187
+ // YYYY-MM-DDTHH:mm:ss.sssZ (optional milliseconds/nanoseconds and timezone)
188
+ return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})$/.test(str);
189
+ }
190
+ export function uint8ArrayToHexString(bytes) {
191
+ if (!bytes)
192
+ return "";
193
+ if (Array.isArray(bytes)) {
194
+ return bytes.map((b) => b.toString(16).padStart(2, "0")).join("");
195
+ }
196
+ return Array.from(bytes)
197
+ .map((b) => b.toString(16).padStart(2, "0"))
198
+ .join("");
199
+ }
200
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/visitor/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { IDL } from "../types";
2
+ import type { ResultField, RecordResultField, VariantResultField, TupleResultField, OptionalResultField, VectorResultField, BlobResultField, RecursiveResultField, PrincipalResultField, NumberResultField, TextResultField, BooleanResultField, NullResultField, UnknownResultField, MethodResultMeta, ServiceResultMeta } from "./types";
3
+ import type { BaseActor, FunctionName } from "@ic-reactor/core";
4
+ export * from "./types";
5
+ /**
6
+ * ResultFieldVisitor generates metadata for displaying method results from Candid IDL types.
7
+ *
8
+ * ## Design Principles
9
+ *
10
+ * 1. **Works with raw IDL types BEFORE transformation** - generates metadata at initialization
11
+ * 2. **No value dependencies** - metadata describes structure, not specific values
12
+ * 3. **Describes display format** - includes hints for how values will appear after transformation
13
+ * 4. **Efficient** - single traversal, reusable metadata
14
+ * 5. **Resolvable** - metadata can be combined with values at runtime via .resolve(val)
15
+ *
16
+ * ## Key Insight: Metadata vs Values
17
+ *
18
+ * The visitor generates a "schema" that describes:
19
+ * - What type each field is in Candid (nat, Principal, opt, etc.)
20
+ * - What it becomes after display transformation (string, null, etc.)
21
+ * - How it should be formatted (timestamp, cycle, hex, etc.)
22
+ *
23
+ * Values are NOT passed during traversal. Instead, the generated schema
24
+ * is used at render time to properly display transformed values.
25
+ *
26
+ * ## Display Transformations (applied by DisplayCodecVisitor)
27
+ *
28
+ * | Candid Type | Display Type | Notes |
29
+ * |-------------|--------------|-------|
30
+ * | nat, int, nat64, int64 | string | BigInt → string |
31
+ * | Principal | string | Principal.toText() |
32
+ * | opt T | T \| null | [value] → value, [] → null |
33
+ * | vec nat8 (blob) | string | Uint8Array → hex string |
34
+ * | variant { Ok, Err } | unwrapped | { Ok: val } → val (or throws on Err) |
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const visitor = new ResultFieldVisitor()
39
+ * const serviceMeta = service.accept(visitor, null)
40
+ *
41
+ * // Get method result metadata
42
+ * const methodMeta = serviceMeta["icrc1_balance_of"]
43
+ * // methodMeta.resultFields[0] = {
44
+ * // type: "number",
45
+ * // candidType: "nat",
46
+ * // displayType: "string",
47
+ * // numberFormat: "normal"
48
+ * // }
49
+ *
50
+ * // At render time, apply to transformed value:
51
+ * const transformedResult = "1000000000" // Already transformed by DisplayCodec
52
+ * renderField(methodMeta.resultFields[0], transformedResult)
53
+ * ```
54
+ */
55
+ export declare class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<string, ResultField | MethodResultMeta<A> | ServiceResultMeta<A>> {
56
+ private displayVisitor;
57
+ visitService(t: IDL.ServiceClass): ServiceResultMeta<A>;
58
+ visitFunc(t: IDL.FuncClass, functionName: FunctionName<A>): MethodResultMeta<A>;
59
+ visitRecord(_t: IDL.RecordClass, fields_: Array<[string, IDL.Type]>, label: string): RecordResultField;
60
+ visitVariant(_t: IDL.VariantClass, fields_: Array<[string, IDL.Type]>, label: string): VariantResultField;
61
+ visitTuple<T extends IDL.Type[]>(_t: IDL.TupleClass<T>, components: IDL.Type[], label: string): TupleResultField;
62
+ visitOpt<T>(_t: IDL.OptClass<T>, ty: IDL.Type<T>, label: string): OptionalResultField;
63
+ visitVec<T>(_t: IDL.VecClass<T>, ty: IDL.Type<T>, label: string): VectorResultField | BlobResultField;
64
+ visitRec<T>(t: IDL.RecClass<T>, ty: IDL.ConstructType<T>, label: string): RecursiveResultField;
65
+ visitPrincipal(t: IDL.PrincipalClass, label: string): PrincipalResultField;
66
+ visitText(t: IDL.TextClass, label: string): TextResultField;
67
+ visitBool(t: IDL.BoolClass, label: string): BooleanResultField;
68
+ visitNull(t: IDL.NullClass, label: string): NullResultField;
69
+ visitInt(t: IDL.IntClass, label: string): NumberResultField;
70
+ visitNat(t: IDL.NatClass, label: string): NumberResultField;
71
+ visitFloat(t: IDL.FloatClass, label: string): NumberResultField;
72
+ visitFixedInt(t: IDL.FixedIntClass, label: string): NumberResultField;
73
+ visitFixedNat(t: IDL.FixedNatClass, label: string): NumberResultField;
74
+ visitType<T>(_t: IDL.Type<T>, label: string): UnknownResultField;
75
+ }
76
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitor/returns/index.ts"],"names":[],"mappings":"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"}