@ic-reactor/candid 3.0.14-beta.1 → 3.0.14-beta.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.
@@ -2,7 +2,7 @@ import type { ActorMethodReturnType, BaseActor, FunctionName } from "@ic-reactor
2
2
  import { CandidDisplayReactor } from "./display-reactor";
3
3
  import type { CandidDisplayReactorParameters, DynamicMethodOptions } from "./types";
4
4
  import { ArgumentsMeta, ArgumentsServiceMeta } from "./visitor/arguments";
5
- import { MethodMeta, ResolvedMethodResult, ServiceMeta } from "./visitor/returns";
5
+ import { MethodMeta, MethodResult, ServiceMeta } from "./visitor/returns";
6
6
  /**
7
7
  * MetadataDisplayReactor combines visitor-based metadata generation
8
8
  * for both input forms and result display.
@@ -12,13 +12,39 @@ import { MethodMeta, ResolvedMethodResult, ServiceMeta } from "./visitor/returns
12
12
  * It extends the base Reactor and adds metadata generation capabilities.
13
13
  * Unlike DisplayReactor, it does not use a separate codec for transformation.
14
14
  * Instead, it uses the metadata visitor to resolve raw values into display-ready structures.
15
+ *
16
+ * ## Usage
17
+ *
18
+ * ```typescript
19
+ * const reactor = new MetadataDisplayReactor({
20
+ * canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
21
+ * clientManager,
22
+ * name: "ICPLedger",
23
+ * })
24
+ *
25
+ * await reactor.initialize()
26
+ *
27
+ * // Get form metadata
28
+ * const argMeta = reactor.getInputMeta("icrc1_transfer")
29
+ * console.log(argMeta.args) // Field descriptors
30
+ * console.log(argMeta.defaults) // Default values
31
+ *
32
+ * // Get result metadata
33
+ * const resultMeta = reactor.getOutputMeta("icrc1_transfer")
34
+ *
35
+ * // Call with display types
36
+ * const result = await reactor.callMethod({
37
+ * functionName: "icrc1_transfer",
38
+ * args: [{ to: { owner: "aaaaa-aa" }, amount: "1000000" }]
39
+ * })
40
+ * ```
15
41
  */
16
42
  declare module "@ic-reactor/core" {
17
43
  interface TransformArgsRegistry<T> {
18
44
  metadata: TransformArgsRegistry<T>["display"];
19
45
  }
20
46
  interface TransformReturnRegistry<T, A = BaseActor> {
21
- metadata: ResolvedMethodResult<A>;
47
+ metadata: MethodResult<A>;
22
48
  }
23
49
  }
24
50
  export declare class MetadataDisplayReactor<A = BaseActor> extends CandidDisplayReactor<A, "metadata"> {
@@ -37,31 +63,40 @@ export declare class MetadataDisplayReactor<A = BaseActor> extends CandidDisplay
37
63
  */
38
64
  private generateMetadata;
39
65
  /**
40
- * Get argument field metadata for a method.
66
+ * Get input field metadata for a method.
41
67
  * Use this to generate input forms.
68
+ *
69
+ * @param methodName The method name to get metadata for
70
+ * @returns ArgumentsMeta containing args, defaults, and validation schema
42
71
  */
43
- getArgumentMeta<M extends FunctionName<A>>(methodName: M): ArgumentsMeta<A, M> | undefined;
72
+ getInputMeta<M extends FunctionName<A>>(methodName: M): ArgumentsMeta<A, M> | undefined;
44
73
  /**
45
- * Get result field metadata for a method.
74
+ * Get output field metadata for a method.
46
75
  * Use this to render results.
76
+ *
77
+ * @param methodName The method name to get metadata for
78
+ * @returns MethodMeta containing return schema and resolve function
47
79
  */
48
- getResultMeta<M extends FunctionName<A>>(methodName: M): MethodMeta<A, M> | undefined;
80
+ getOutputMeta<M extends FunctionName<A>>(methodName: M): MethodMeta<A, M> | undefined;
49
81
  /**
50
- * Get all argument metadata.
82
+ * Get all input metadata for all methods.
51
83
  */
52
- getAllArgumentMeta(): ArgumentsServiceMeta<A> | null;
84
+ getAllInputMeta(): ArgumentsServiceMeta<A> | null;
53
85
  /**
54
- * Get all result metadata.
86
+ * Get all output metadata for all methods.
55
87
  */
56
- getAllResultMeta(): ServiceMeta<A> | null;
88
+ getAllOutputMeta(): ServiceMeta<A> | null;
57
89
  /**
58
90
  * Register a dynamic method by its Candid signature.
59
91
  * After registration, all DisplayReactor methods work with display type transformations.
60
92
  */
61
93
  registerMethod(options: DynamicMethodOptions): Promise<void>;
62
- protected transformResult<M extends FunctionName<A>>(methodName: M, result: ActorMethodReturnType<A[M]>): ResolvedMethodResult<A>;
94
+ protected transformResult<M extends FunctionName<A>>(methodName: M, result: ActorMethodReturnType<A[M]>): MethodResult<A>;
63
95
  /**
64
96
  * Perform a dynamic call and return result with metadata.
97
+ *
98
+ * @param options Method registration and call options
99
+ * @returns Object containing the result and metadata
65
100
  */
66
101
  callDynamicWithMeta<T = unknown>(options: DynamicMethodOptions & {
67
102
  args?: unknown[];
@@ -70,4 +105,24 @@ export declare class MetadataDisplayReactor<A = BaseActor> extends CandidDisplay
70
105
  meta: MethodMeta<A>;
71
106
  }>;
72
107
  }
108
+ /**
109
+ * Create and initialize a MetadataDisplayReactor.
110
+ * This is a convenience function that creates the reactor and calls initialize().
111
+ *
112
+ * @param options Reactor configuration options
113
+ * @returns Initialized MetadataDisplayReactor
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const reactor = await createMetadataReactor({
118
+ * canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
119
+ * clientManager,
120
+ * name: "ICPLedger",
121
+ * })
122
+ *
123
+ * // Reactor is ready to use
124
+ * const methods = reactor.getMethodNames()
125
+ * ```
126
+ */
127
+ export declare function createMetadataReactor<A = BaseActor>(options: CandidDisplayReactorParameters<A>): Promise<MetadataDisplayReactor<A>>;
73
128
  //# sourceMappingURL=metadata-display-reactor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-display-reactor.d.ts","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EACV,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAChB,OAAO,EAEL,aAAa,EACb,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,UAAU,EACV,oBAAoB,EAEpB,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAM1B;;;;;;;;;GASG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,qBAAqB,CAAC,CAAC;QAC/B,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;KAC9C;IACD,UAAU,uBAAuB,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS;QAChD,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAA;KAClC;CACF;AAED,qBAAa,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,oBAAoB,CAC7E,CAAC,EACD,UAAU,CACX;IACC,SAAyB,SAAS,EAAG,UAAU,CAAS;IAGxD,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,UAAU,CAA8B;IAGhD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAAC,aAAa,CAA2B;gBAE3C,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAQrD;;OAEG;IACmB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;;OAGG;IACI,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC9C,UAAU,EAAE,CAAC,GACZ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAIlC;;;OAGG;IACI,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC5C,UAAU,EAAE,CAAC,GACZ,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAI/B;;OAEG;IACI,kBAAkB,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3D;;OAEG;IACI,gBAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAOhD;;;OAGG;IACmB,cAAc,CAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;cAUG,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC1D,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,oBAAoB,CAAC,CAAC,CAAC;IAU1B;;OAEG;IACU,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAC1C,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CAY/C"}
1
+ {"version":3,"file":"metadata-display-reactor.d.ts","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EACV,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAChB,OAAO,EAEL,aAAa,EACb,oBAAoB,EAErB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,UAAU,EACV,YAAY,EAEZ,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAM1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,qBAAqB,CAAC,CAAC;QAC/B,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;KAC9C;IACD,UAAU,uBAAuB,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS;QAChD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;KAC1B;CACF;AAED,qBAAa,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,oBAAoB,CAC7E,CAAC,EACD,UAAU,CACX;IACC,SAAyB,SAAS,EAAG,UAAU,CAAS;IAGxD,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,UAAU,CAA8B;IAGhD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAAC,aAAa,CAA2B;gBAE3C,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAQrD;;OAEG;IACmB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;OAMG;IACI,YAAY,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC3C,UAAU,EAAE,CAAC,GACZ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAIlC;;;;;;OAMG;IACI,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC5C,UAAU,EAAE,CAAC,GACZ,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAI/B;;OAEG;IACI,eAAe,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIxD;;OAEG;IACI,gBAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAOhD;;;OAGG;IACmB,cAAc,CAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;cAUG,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC1D,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,YAAY,CAAC,CAAC,CAAC;IAclB;;;;;OAKG;IACU,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAC1C,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CAY/C;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,GAAG,SAAS,EACvD,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAIpC"}
@@ -1,5 +1,5 @@
1
1
  import { CandidDisplayReactor } from "./display-reactor";
2
- import { FieldVisitor, } from "./visitor/arguments";
2
+ import { FieldVisitor, MetadataError, } from "./visitor/arguments";
3
3
  import { ResultFieldVisitor, } from "./visitor/returns";
4
4
  export class MetadataDisplayReactor extends CandidDisplayReactor {
5
5
  constructor(config) {
@@ -51,29 +51,35 @@ export class MetadataDisplayReactor extends CandidDisplayReactor {
51
51
  // METADATA ACCESS
52
52
  // ══════════════════════════════════════════════════════════════════════════
53
53
  /**
54
- * Get argument field metadata for a method.
54
+ * Get input field metadata for a method.
55
55
  * Use this to generate input forms.
56
+ *
57
+ * @param methodName The method name to get metadata for
58
+ * @returns ArgumentsMeta containing args, defaults, and validation schema
56
59
  */
57
- getArgumentMeta(methodName) {
60
+ getInputMeta(methodName) {
58
61
  return this.argumentMeta?.[methodName];
59
62
  }
60
63
  /**
61
- * Get result field metadata for a method.
64
+ * Get output field metadata for a method.
62
65
  * Use this to render results.
66
+ *
67
+ * @param methodName The method name to get metadata for
68
+ * @returns MethodMeta containing return schema and resolve function
63
69
  */
64
- getResultMeta(methodName) {
70
+ getOutputMeta(methodName) {
65
71
  return this.resultMeta?.[methodName];
66
72
  }
67
73
  /**
68
- * Get all argument metadata.
74
+ * Get all input metadata for all methods.
69
75
  */
70
- getAllArgumentMeta() {
76
+ getAllInputMeta() {
71
77
  return this.argumentMeta;
72
78
  }
73
79
  /**
74
- * Get all result metadata.
80
+ * Get all output metadata for all methods.
75
81
  */
76
- getAllResultMeta() {
82
+ getAllOutputMeta() {
77
83
  return this.resultMeta;
78
84
  }
79
85
  // ══════════════════════════════════════════════════════════════════════════
@@ -93,14 +99,17 @@ export class MetadataDisplayReactor extends CandidDisplayReactor {
93
99
  // ══════════════════════════════════════════════════════════════════════════
94
100
  transformResult(methodName, result) {
95
101
  // Get metadata and generate resolved result
96
- const meta = this.getResultMeta(methodName);
102
+ const meta = this.getOutputMeta(methodName);
97
103
  if (!meta) {
98
- throw new Error(`No metadata found for method "${methodName}"`);
104
+ throw new MetadataError(`No output metadata found for method`, String(methodName), "method");
99
105
  }
100
106
  return meta.resolve(result);
101
107
  }
102
108
  /**
103
109
  * Perform a dynamic call and return result with metadata.
110
+ *
111
+ * @param options Method registration and call options
112
+ * @returns Object containing the result and metadata
104
113
  */
105
114
  async callDynamicWithMeta(options) {
106
115
  await this.registerMethod(options);
@@ -108,7 +117,7 @@ export class MetadataDisplayReactor extends CandidDisplayReactor {
108
117
  functionName: options.functionName,
109
118
  args: options.args,
110
119
  }));
111
- const meta = this.getResultMeta(options.functionName);
120
+ const meta = this.getOutputMeta(options.functionName);
112
121
  return { result, meta };
113
122
  }
114
123
  }
@@ -125,4 +134,31 @@ Object.defineProperty(MetadataDisplayReactor, "resultVisitor", {
125
134
  writable: true,
126
135
  value: new ResultFieldVisitor()
127
136
  });
137
+ // ════════════════════════════════════════════════════════════════════════════
138
+ // Factory Function
139
+ // ════════════════════════════════════════════════════════════════════════════
140
+ /**
141
+ * Create and initialize a MetadataDisplayReactor.
142
+ * This is a convenience function that creates the reactor and calls initialize().
143
+ *
144
+ * @param options Reactor configuration options
145
+ * @returns Initialized MetadataDisplayReactor
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * const reactor = await createMetadataReactor({
150
+ * canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
151
+ * clientManager,
152
+ * name: "ICPLedger",
153
+ * })
154
+ *
155
+ * // Reactor is ready to use
156
+ * const methods = reactor.getMethodNames()
157
+ * ```
158
+ */
159
+ export async function createMetadataReactor(options) {
160
+ const reactor = new MetadataDisplayReactor(options);
161
+ await reactor.initialize();
162
+ return reactor;
163
+ }
128
164
  //# sourceMappingURL=metadata-display-reactor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-display-reactor.js","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata-display-reactor.js","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { VisitorDataType, CompoundField, FieldNode, FieldByType, PrimitiveField,
4
4
  *
5
5
  * @example
6
6
  * ```tsx
7
- * function FieldInput({ field }: { field: Field }) {
7
+ * function FieldInput({ field }: { field: FieldNode }) {
8
8
  * if (isFieldType(field, 'record')) {
9
9
  * // field is now typed as RecordField
10
10
  * return <RecordInput field={field} />
@@ -18,12 +18,26 @@ import { VisitorDataType, CompoundField, FieldNode, FieldByType, PrimitiveField,
18
18
  * ```
19
19
  */
20
20
  export declare function isFieldType<T extends VisitorDataType>(field: FieldNode, type: T): field is FieldByType<T>;
21
- /** Check if a field is a compound type (contains other fields) */
21
+ /**
22
+ * Check if a field is a compound type (contains other fields).
23
+ * Compound types: record, variant, tuple, optional, vector, recursive
24
+ */
22
25
  export declare function isCompoundField(field: FieldNode): field is CompoundField;
23
- /** Check if a field is a primitive type */
26
+ /**
27
+ * Check if a field is a primitive type.
28
+ * Primitive types: principal, number, text, boolean, null
29
+ */
24
30
  export declare function isPrimitiveField(field: FieldNode): field is PrimitiveField;
25
- /** Check if a field has children (for iteration) */
26
- export declare function hasChildFields(field: FieldNode): field is RecordField | VariantField | TupleField;
31
+ /**
32
+ * Check if a field has child fields array (for iteration).
33
+ * Applies to: record (fields), tuple (fields)
34
+ */
35
+ export declare function hasChildFields(field: FieldNode): field is RecordField | TupleField;
36
+ /**
37
+ * Check if a field has variant options (for iteration).
38
+ * Applies to: variant (options)
39
+ */
40
+ export declare function hasOptions(field: FieldNode): field is VariantField;
27
41
  /**
28
42
  * Format a raw Candid label into a human-readable display label.
29
43
  * Handles common patterns like "__arg0", "_0_", "snake_case", etc.
@@ -34,6 +48,7 @@ export declare function hasChildFields(field: FieldNode): field is RecordField |
34
48
  * formatLabel("_0_") // "Item 0"
35
49
  * formatLabel("created_at") // "Created At"
36
50
  * formatLabel("userAddress") // "User Address"
51
+ * formatLabel("__ret0") // "Result 0"
37
52
  * ```
38
53
  */
39
54
  export declare function formatLabel(label: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/visitor/arguments/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,aAAa,EACb,SAAS,EACT,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,YAAY,EACb,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,EACnD,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,CAAC,GACN,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEzB;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,aAAa,CASxE;AAED,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,cAAc,CAE1E;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,GACf,KAAK,IAAI,WAAW,GAAG,YAAY,GAAG,UAAU,CAElD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA2BjD"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/visitor/arguments/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,aAAa,EACb,SAAS,EACT,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,YAAY,EACb,MAAM,SAAS,CAAA;AAMhB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,EACnD,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,CAAC,GACN,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,aAAa,CASxE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,cAAc,CAE1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,GACf,KAAK,IAAI,WAAW,GAAG,UAAU,CAMnC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,YAAY,CAMlE;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAuCjD"}
@@ -1,9 +1,12 @@
1
+ // ════════════════════════════════════════════════════════════════════════════
2
+ // Type Guards
3
+ // ════════════════════════════════════════════════════════════════════════════
1
4
  /**
2
5
  * Type guard for checking specific field types.
3
6
  *
4
7
  * @example
5
8
  * ```tsx
6
- * function FieldInput({ field }: { field: Field }) {
9
+ * function FieldInput({ field }: { field: FieldNode }) {
7
10
  * if (isFieldType(field, 'record')) {
8
11
  * // field is now typed as RecordField
9
12
  * return <RecordInput field={field} />
@@ -19,7 +22,10 @@
19
22
  export function isFieldType(field, type) {
20
23
  return field.type === type;
21
24
  }
22
- /** Check if a field is a compound type (contains other fields) */
25
+ /**
26
+ * Check if a field is a compound type (contains other fields).
27
+ * Compound types: record, variant, tuple, optional, vector, recursive
28
+ */
23
29
  export function isCompoundField(field) {
24
30
  return [
25
31
  "record",
@@ -30,13 +36,30 @@ export function isCompoundField(field) {
30
36
  "recursive",
31
37
  ].includes(field.type);
32
38
  }
33
- /** Check if a field is a primitive type */
39
+ /**
40
+ * Check if a field is a primitive type.
41
+ * Primitive types: principal, number, text, boolean, null
42
+ */
34
43
  export function isPrimitiveField(field) {
35
44
  return ["principal", "number", "text", "boolean", "null"].includes(field.type);
36
45
  }
37
- /** Check if a field has children (for iteration) */
46
+ /**
47
+ * Check if a field has child fields array (for iteration).
48
+ * Applies to: record (fields), tuple (fields)
49
+ */
38
50
  export function hasChildFields(field) {
39
- return "fields" in field && Array.isArray(field.fields);
51
+ return ((field.type === "record" || field.type === "tuple") &&
52
+ "fields" in field &&
53
+ Array.isArray(field.fields));
54
+ }
55
+ /**
56
+ * Check if a field has variant options (for iteration).
57
+ * Applies to: variant (options)
58
+ */
59
+ export function hasOptions(field) {
60
+ return (field.type === "variant" &&
61
+ "options" in field &&
62
+ Array.isArray(field.options));
40
63
  }
41
64
  // ════════════════════════════════════════════════════════════════════════════
42
65
  // Label Formatting Utilities
@@ -51,6 +74,7 @@ export function hasChildFields(field) {
51
74
  * formatLabel("_0_") // "Item 0"
52
75
  * formatLabel("created_at") // "Created At"
53
76
  * formatLabel("userAddress") // "User Address"
77
+ * formatLabel("__ret0") // "Result 0"
54
78
  * ```
55
79
  */
56
80
  export function formatLabel(label) {
@@ -59,11 +83,21 @@ export function formatLabel(label) {
59
83
  const num = label.slice(5);
60
84
  return `Arg ${num}`;
61
85
  }
86
+ // Handle return labels: __ret0 -> Result 0
87
+ if (label.startsWith("__ret")) {
88
+ const num = label.slice(5);
89
+ return `Result ${num}`;
90
+ }
62
91
  // Handle tuple index labels: _0_ -> Item 0
63
92
  if (/^_\d+_$/.test(label)) {
64
93
  const num = label.slice(1, -1);
65
94
  return `Item ${num}`;
66
95
  }
96
+ // Handle simple index labels: _0 -> Item 0
97
+ if (/^_\d+$/.test(label)) {
98
+ const num = label.slice(1);
99
+ return `Item ${num}`;
100
+ }
67
101
  // Handle item labels for vectors: label_item -> Item
68
102
  if (label.endsWith("_item")) {
69
103
  return "Item";
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/visitor/arguments/helpers.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,WAAW,CACzB,KAAgB,EAChB,IAAO;IAEP,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAA;AAC5B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,KAAgB;IAC9C,OAAO;QACL,QAAQ;QACR,SAAS;QACT,OAAO;QACP,UAAU;QACV,QAAQ;QACR,WAAW;KACZ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAC/C,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAChF,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAC5B,KAAgB;IAEhB,OAAO,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAE,KAAqB,CAAC,MAAM,CAAC,CAAA;AAC1E,CAAC;AAED,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,0CAA0C;IAC1C,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC1B,OAAO,OAAO,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9B,OAAO,QAAQ,GAAG,EAAE,CAAA;IACtB,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,kDAAkD;IAClD,2BAA2B;IAC3B,OAAO,KAAK;SACT,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,sCAAsC;SAC9D,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,kCAAkC;SACrD,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,wCAAwC;SAC5E,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/visitor/arguments/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitor/arguments/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitor/arguments/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { isQuery } from "../helpers";
2
2
  import { checkTextFormat, checkNumberFormat } from "../constants";
3
+ import { MetadataError } from "./types";
3
4
  import { IDL } from "@icp-sdk/core/candid";
4
5
  import { Principal } from "@icp-sdk/core/principal";
5
6
  import * as z from "zod";
@@ -183,24 +184,24 @@ export class FieldVisitor extends IDL.Visitor {
183
184
  visitFunc(t, functionName) {
184
185
  const functionType = isQuery(t) ? "query" : "update";
185
186
  const argCount = t.argTypes.length;
186
- const fields = t.argTypes.map((arg, index) => {
187
+ const args = t.argTypes.map((arg, index) => {
187
188
  return this.withName(`[${index}]`, () => arg.accept(this, `__arg${index}`));
188
189
  });
189
- const defaultValues = fields.map((field) => field.defaultValue);
190
+ const defaults = args.map((field) => field.defaultValue);
190
191
  // Handle empty args case for schema
191
192
  // For no-arg functions, use an empty array schema
192
193
  // For functions with args, use a proper tuple schema
193
194
  const schema = argCount === 0
194
195
  ? z.tuple([])
195
- : z.tuple(fields.map((field) => field.schema));
196
+ : z.tuple(args.map((field) => field.schema));
196
197
  return {
197
198
  functionType,
198
199
  functionName,
199
- fields,
200
- defaultValues: defaultValues,
200
+ args,
201
+ defaults,
201
202
  schema,
202
203
  argCount,
203
- isNoArgs: argCount === 0,
204
+ isEmpty: argCount === 0,
204
205
  };
205
206
  }
206
207
  // ════════════════════════════════════════════════════════════════════════
@@ -233,11 +234,11 @@ export class FieldVisitor extends IDL.Visitor {
233
234
  }
234
235
  visitVariant(_t, fields_, label) {
235
236
  const name = this.currentName();
236
- const fields = [];
237
+ const options = [];
237
238
  const variantSchemas = [];
238
239
  for (const [key, type] of fields_) {
239
240
  const field = this.withName(`.${key}`, () => type.accept(this, key));
240
- fields.push(field);
241
+ options.push(field);
241
242
  if (field.type === "null") {
242
243
  variantSchemas.push(z.object({ _type: z.literal(key) }));
243
244
  }
@@ -248,45 +249,45 @@ export class FieldVisitor extends IDL.Visitor {
248
249
  }));
249
250
  }
250
251
  }
251
- const firstField = fields[0];
252
- const defaultOption = firstField.label;
253
- const defaultValue = firstField.type === "null"
252
+ const firstOption = options[0];
253
+ const defaultOption = firstOption.label;
254
+ const defaultValue = firstOption.type === "null"
254
255
  ? { _type: defaultOption }
255
256
  : {
256
257
  _type: defaultOption,
257
- [defaultOption]: firstField.defaultValue,
258
+ [defaultOption]: firstOption.defaultValue,
258
259
  };
259
260
  const schema = z.union(variantSchemas);
260
261
  // Helper to get default value for any option
261
262
  const getOptionDefault = (option) => {
262
- const optField = fields.find((f) => f.label === option);
263
+ const optField = options.find((f) => f.label === option);
263
264
  if (!optField) {
264
- throw new Error(`Unknown variant option: ${option}`);
265
+ throw new MetadataError(`Unknown variant option: "${option}". Available: ${options.map((o) => o.label).join(", ")}`, name, "variant");
265
266
  }
266
267
  return optField.type === "null"
267
268
  ? { _type: option }
268
269
  : { _type: option, [option]: optField.defaultValue };
269
270
  };
270
271
  // Helper to get field for a specific option
271
- const getField = (option) => {
272
- const optField = fields.find((f) => f.label === option);
272
+ const getOption = (option) => {
273
+ const optField = options.find((f) => f.label === option);
273
274
  if (!optField) {
274
- throw new Error(`Unknown variant option: ${option}`);
275
+ throw new MetadataError(`Unknown variant option: "${option}". Available: ${options.map((o) => o.label).join(", ")}`, name, "variant");
275
276
  }
276
277
  return optField;
277
278
  };
278
- // Helper to get currently selected option from a value
279
- const getSelectedOption = (value) => {
279
+ // Helper to get currently selected option key from a value
280
+ const getSelectedKey = (value) => {
280
281
  if (value._type && typeof value._type === "string") {
281
282
  return value._type;
282
283
  }
283
- const validKeys = Object.keys(value).filter((k) => fields.some((f) => f.label === k));
284
+ const validKeys = Object.keys(value).filter((k) => options.some((f) => f.label === k));
284
285
  return validKeys[0] ?? defaultOption;
285
286
  };
286
- // Helper to get selected field from a value
287
- const getSelectedField = (value) => {
288
- const selectedOption = getSelectedOption(value);
289
- return getField(selectedOption);
287
+ // Helper to get the field for the currently selected option
288
+ const getSelectedOption = (value) => {
289
+ const selectedKey = getSelectedKey(value);
290
+ return getOption(selectedKey);
290
291
  };
291
292
  return {
292
293
  type: "variant",
@@ -295,14 +296,14 @@ export class FieldVisitor extends IDL.Visitor {
295
296
  name,
296
297
  component: "variant-select",
297
298
  renderHint: COMPOUND_RENDER_HINT,
298
- fields,
299
+ options,
299
300
  defaultOption,
300
301
  defaultValue,
301
302
  schema,
302
303
  getOptionDefault,
303
- getField,
304
+ getOption,
305
+ getSelectedKey,
304
306
  getSelectedOption,
305
- getSelectedField,
306
307
  candidType: "variant",
307
308
  };
308
309
  }