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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +5 -1
  2. package/dist/display-reactor.d.ts +3 -2
  3. package/dist/display-reactor.d.ts.map +1 -1
  4. package/dist/display-reactor.js +6 -0
  5. package/dist/display-reactor.js.map +1 -1
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/metadata-display-reactor.d.ts +73 -0
  11. package/dist/metadata-display-reactor.d.ts.map +1 -0
  12. package/dist/metadata-display-reactor.js +128 -0
  13. package/dist/metadata-display-reactor.js.map +1 -0
  14. package/dist/visitor/arguments/index.d.ts +69 -0
  15. package/dist/visitor/arguments/index.d.ts.map +1 -0
  16. package/dist/visitor/arguments/index.js +277 -0
  17. package/dist/visitor/arguments/index.js.map +1 -0
  18. package/dist/visitor/arguments/types.d.ts +92 -0
  19. package/dist/visitor/arguments/types.d.ts.map +1 -0
  20. package/dist/visitor/arguments/types.js +2 -0
  21. package/dist/visitor/arguments/types.js.map +1 -0
  22. package/dist/visitor/constants.d.ts +4 -0
  23. package/dist/visitor/constants.d.ts.map +1 -0
  24. package/dist/visitor/constants.js +61 -0
  25. package/dist/visitor/constants.js.map +1 -0
  26. package/dist/visitor/helpers.d.ts +30 -0
  27. package/dist/visitor/helpers.d.ts.map +1 -0
  28. package/dist/visitor/helpers.js +200 -0
  29. package/dist/visitor/helpers.js.map +1 -0
  30. package/dist/visitor/returns/index.d.ts +76 -0
  31. package/dist/visitor/returns/index.d.ts.map +1 -0
  32. package/dist/visitor/returns/index.js +425 -0
  33. package/dist/visitor/returns/index.js.map +1 -0
  34. package/dist/visitor/returns/types.d.ts +142 -0
  35. package/dist/visitor/returns/types.d.ts.map +1 -0
  36. package/dist/visitor/returns/types.js +2 -0
  37. package/dist/visitor/returns/types.js.map +1 -0
  38. package/dist/visitor/types.d.ts +6 -0
  39. package/dist/visitor/types.d.ts.map +1 -0
  40. package/dist/visitor/types.js +3 -0
  41. package/dist/visitor/types.js.map +1 -0
  42. package/package.json +4 -2
  43. package/src/adapter.ts +446 -0
  44. package/src/constants.ts +11 -0
  45. package/src/display-reactor.ts +332 -0
  46. package/src/index.ts +7 -0
  47. package/src/metadata-display-reactor.ts +184 -0
  48. package/src/reactor.ts +199 -0
  49. package/src/types.ts +107 -0
  50. package/src/utils.ts +28 -0
  51. package/src/visitor/arguments/index.test.ts +882 -0
  52. package/src/visitor/arguments/index.ts +405 -0
  53. package/src/visitor/arguments/types.ts +168 -0
  54. package/src/visitor/constants.ts +62 -0
  55. package/src/visitor/helpers.ts +221 -0
  56. package/src/visitor/returns/index.test.ts +2027 -0
  57. package/src/visitor/returns/index.ts +545 -0
  58. package/src/visitor/returns/types.ts +271 -0
  59. package/src/visitor/types.ts +29 -0
package/README.md CHANGED
@@ -86,6 +86,7 @@ await clientManager.initialize()
86
86
  const reactor = new CandidReactor({
87
87
  canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
88
88
  clientManager,
89
+ name: "my-canister",
89
90
  })
90
91
  await reactor.initialize() // Fetches IDL from network
91
92
 
@@ -93,6 +94,7 @@ await reactor.initialize() // Fetches IDL from network
93
94
  const reactor = new CandidReactor({
94
95
  canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
95
96
  clientManager,
97
+ name: "my-canister",
96
98
  candid: `service : {
97
99
  icrc1_name : () -> (text) query;
98
100
  icrc1_balance_of : (record { owner : principal }) -> (nat) query;
@@ -117,6 +119,7 @@ You can also register individual methods on-the-fly:
117
119
  const reactor = new CandidReactor({
118
120
  canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
119
121
  clientManager,
122
+ name: "my-canister",
120
123
  })
121
124
 
122
125
  // Register a method by its Candid signature
@@ -272,8 +275,9 @@ new CandidReactor(config: CandidReactorParameters)
272
275
 
273
276
  | Parameter | Type | Required | Description |
274
277
  | --------------- | ------------------ | -------- | ------------------------------------------------ |
275
- | `canisterId` | `CanisterId` | Yes | The canister ID to interact with |
278
+ | `name` | `string` | Yes | Name of the canister/reactor |
276
279
  | `clientManager` | `ClientManager` | Yes | Client manager from `@ic-reactor/core` |
280
+ | `canisterId` | `CanisterId` | No | The canister ID (optional if using env vars) |
277
281
  | `candid` | `string` | No | Candid service definition (avoids network fetch) |
278
282
  | `idlFactory` | `InterfaceFactory` | No | IDL factory (if already available) |
279
283
  | `actor` | `A` | No | Existing actor instance |
@@ -1,4 +1,4 @@
1
- import type { BaseActor } from "@ic-reactor/core";
1
+ import type { BaseActor, TransformKey } from "@ic-reactor/core";
2
2
  import type { CandidDisplayReactorParameters, DynamicMethodOptions } from "./types";
3
3
  import { DisplayReactor } from "@ic-reactor/core";
4
4
  import { CandidAdapter } from "./adapter";
@@ -50,7 +50,8 @@ import { CandidAdapter } from "./adapter";
50
50
  * })
51
51
  * ```
52
52
  */
53
- export declare class CandidDisplayReactor<A = BaseActor> extends DisplayReactor<A> {
53
+ export declare class CandidDisplayReactor<A = BaseActor, T extends TransformKey = "display"> extends DisplayReactor<A, T> {
54
+ readonly transform: T;
54
55
  adapter: CandidAdapter;
55
56
  private candidSource?;
56
57
  constructor(config: CandidDisplayReactorParameters<A>);
@@ -1 +1 @@
1
- {"version":3,"file":"display-reactor.d.ts","sourceRoot":"","sources":["../src/display-reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,kBAAkB,CAAA;AAC3E,OAAO,KAAK,EACV,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAEhB,OAAO,EACL,cAAc,EAGf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAOzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,oBAAoB,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACjE,OAAO,EAAE,aAAa,CAAA;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAQ;gBAEjB,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAwBrD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBxC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;;;;;;;;;;;;;;;;;;OAmBG;IACU,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCzE;;;;;;;;;;OAUG;IACU,eAAe,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;OAEG;IACI,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI/C;;OAEG;IACI,cAAc,IAAI,MAAM,EAAE;IAQjC;;;;;;;;;;;;OAYG;IACU,WAAW,CAAC,CAAC,GAAG,OAAO,EAClC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC,CAAC,CAAC;IAQb;;;;;;;;;;;;;OAaG;IACU,YAAY,CAAC,CAAC,GAAG,OAAO,EACnC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC,CAAC,CAAC;IAQb;;;;;;;;;;;;;;OAcG;IACU,iBAAiB,CAAC,CAAC,GAAG,OAAO,EACxC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC,CAAC,CAAC;CAOd"}
1
+ {"version":3,"file":"display-reactor.d.ts","sourceRoot":"","sources":["../src/display-reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EACV,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAEhB,OAAO,EACL,cAAc,EAGf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAOzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,oBAAoB,CAC/B,CAAC,GAAG,SAAS,EACb,CAAC,SAAS,YAAY,GAAG,SAAS,CAClC,SAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5B,SAAgB,SAAS,EAAgB,CAAC,CAAA;IACnC,OAAO,EAAE,aAAa,CAAA;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAQ;gBAEjB,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAwBrD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBxC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;;;;;;;;;;;;;;;;;;OAmBG;IACU,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCzE;;;;;;;;;;OAUG;IACU,eAAe,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;OAEG;IACI,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI/C;;OAEG;IACI,cAAc,IAAI,MAAM,EAAE;IAQjC;;;;;;;;;;;;OAYG;IACU,WAAW,CAAC,CAAC,GAAG,OAAO,EAClC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC,CAAC,CAAC;IAQb;;;;;;;;;;;;;OAaG;IACU,YAAY,CAAC,CAAC,GAAG,OAAO,EACnC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC,CAAC,CAAC;IAQb;;;;;;;;;;;;;;OAcG;IACU,iBAAiB,CAAC,CAAC,GAAG,OAAO,EACxC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC,CAAC,CAAC;CAOd"}
@@ -59,6 +59,12 @@ export class CandidDisplayReactor extends DisplayReactor {
59
59
  superConfig.idlFactory = ({ IDL }) => IDL.Service({});
60
60
  }
61
61
  super(superConfig);
62
+ Object.defineProperty(this, "transform", {
63
+ enumerable: true,
64
+ configurable: true,
65
+ writable: true,
66
+ value: "display"
67
+ });
62
68
  Object.defineProperty(this, "adapter", {
63
69
  enumerable: true,
64
70
  configurable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"display-reactor.js","sourceRoot":"","sources":["../src/display-reactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display-reactor.js","sourceRoot":"","sources":["../src/display-reactor.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export * from "./constants";
4
4
  export * from "./utils";
5
5
  export * from "./reactor";
6
6
  export * from "./display-reactor";
7
+ export * from "./metadata-display-reactor";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA"}
package/dist/index.js CHANGED
@@ -4,4 +4,5 @@ export * from "./constants";
4
4
  export * from "./utils";
5
5
  export * from "./reactor";
6
6
  export * from "./display-reactor";
7
+ export * from "./metadata-display-reactor";
7
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA"}
@@ -0,0 +1,73 @@
1
+ import type { ActorMethodReturnType, BaseActor, FunctionName } from "@ic-reactor/core";
2
+ import { CandidDisplayReactor } from "./display-reactor";
3
+ import type { CandidDisplayReactorParameters, DynamicMethodOptions } from "./types";
4
+ import { MethodArgumentsMeta, ServiceArgumentsMeta } from "./visitor/arguments";
5
+ import { MethodResultMeta, ResolvedMethodResult, ServiceResultMeta } from "./visitor/returns";
6
+ /**
7
+ * MetadataDisplayReactor combines visitor-based metadata generation
8
+ * for both input forms and result display.
9
+ *
10
+ * ## Architecture
11
+ *
12
+ * It extends the base Reactor and adds metadata generation capabilities.
13
+ * Unlike DisplayReactor, it does not use a separate codec for transformation.
14
+ * Instead, it uses the metadata visitor to resolve raw values into display-ready structures.
15
+ */
16
+ declare module "@ic-reactor/core" {
17
+ interface TransformArgsRegistry<T> {
18
+ metadata: TransformArgsRegistry<T>["display"];
19
+ }
20
+ interface TransformReturnRegistry<T, A = BaseActor> {
21
+ metadata: ResolvedMethodResult<A>;
22
+ }
23
+ }
24
+ export declare class MetadataDisplayReactor<A = BaseActor> extends CandidDisplayReactor<A, "metadata"> {
25
+ readonly transform: "metadata";
26
+ private argumentMeta;
27
+ private resultMeta;
28
+ private static argVisitor;
29
+ private static resultVisitor;
30
+ constructor(config: CandidDisplayReactorParameters<A>);
31
+ /**
32
+ * Initializes the reactor by parsing Candid and generating all metadata.
33
+ */
34
+ initialize(): Promise<void>;
35
+ /**
36
+ * Generate all metadata from the service interface using visitors.
37
+ */
38
+ private generateMetadata;
39
+ /**
40
+ * Get argument field metadata for a method.
41
+ * Use this to generate input forms.
42
+ */
43
+ getArgumentMeta<M extends FunctionName<A>>(methodName: M): MethodArgumentsMeta<A, M> | undefined;
44
+ /**
45
+ * Get result field metadata for a method.
46
+ * Use this to render results.
47
+ */
48
+ getResultMeta<M extends FunctionName<A>>(methodName: M): MethodResultMeta<A, M> | undefined;
49
+ /**
50
+ * Get all argument metadata.
51
+ */
52
+ getAllArgumentMeta(): ServiceArgumentsMeta<A> | null;
53
+ /**
54
+ * Get all result metadata.
55
+ */
56
+ getAllResultMeta(): ServiceResultMeta<A> | null;
57
+ /**
58
+ * Register a dynamic method by its Candid signature.
59
+ * After registration, all DisplayReactor methods work with display type transformations.
60
+ */
61
+ registerMethod(options: DynamicMethodOptions): Promise<void>;
62
+ protected transformResult<M extends FunctionName<A>>(methodName: M, result: ActorMethodReturnType<A[M]>): ResolvedMethodResult<A>;
63
+ /**
64
+ * Perform a dynamic call and return result with metadata.
65
+ */
66
+ callDynamicWithMeta<T = unknown>(options: DynamicMethodOptions & {
67
+ args?: unknown[];
68
+ }): Promise<{
69
+ result: T;
70
+ meta: MethodResultMeta<A>;
71
+ }>;
72
+ }
73
+ //# sourceMappingURL=metadata-display-reactor.d.ts.map
@@ -0,0 +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,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EAEpB,iBAAiB,EAClB,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,CAAoC;IAGtD,OAAO,CAAC,MAAM,CAAC,UAAU,CAA6B;IACtD,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,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAIxC;;;OAGG;IACI,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC5C,UAAU,EAAE,CAAC,GACZ,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAIrC;;OAEG;IACI,kBAAkB,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3D;;OAEG;IACI,gBAAgB,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAOtD;;;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,gBAAgB,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CAYrD"}
@@ -0,0 +1,128 @@
1
+ import { CandidDisplayReactor } from "./display-reactor";
2
+ import { ArgumentFieldVisitor, } from "./visitor/arguments";
3
+ import { ResultFieldVisitor, } from "./visitor/returns";
4
+ export class MetadataDisplayReactor extends CandidDisplayReactor {
5
+ constructor(config) {
6
+ super(config);
7
+ Object.defineProperty(this, "transform", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: "metadata"
12
+ });
13
+ // Metadata storage
14
+ Object.defineProperty(this, "argumentMeta", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: null
19
+ });
20
+ Object.defineProperty(this, "resultMeta", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: null
25
+ });
26
+ }
27
+ // ══════════════════════════════════════════════════════════════════════════
28
+ // INITIALIZATION
29
+ // ══════════════════════════════════════════════════════════════════════════
30
+ /**
31
+ * Initializes the reactor by parsing Candid and generating all metadata.
32
+ */
33
+ async initialize() {
34
+ await super.initialize();
35
+ // Generate metadata using visitors
36
+ this.generateMetadata();
37
+ }
38
+ /**
39
+ * Generate all metadata from the service interface using visitors.
40
+ */
41
+ generateMetadata() {
42
+ const service = this.getServiceInterface();
43
+ if (!service)
44
+ return;
45
+ // Generate argument metadata
46
+ this.argumentMeta = service.accept(MetadataDisplayReactor.argVisitor, null);
47
+ // Generate result metadata
48
+ this.resultMeta = service.accept(MetadataDisplayReactor.resultVisitor, null);
49
+ }
50
+ // ══════════════════════════════════════════════════════════════════════════
51
+ // METADATA ACCESS
52
+ // ══════════════════════════════════════════════════════════════════════════
53
+ /**
54
+ * Get argument field metadata for a method.
55
+ * Use this to generate input forms.
56
+ */
57
+ getArgumentMeta(methodName) {
58
+ return this.argumentMeta?.[methodName];
59
+ }
60
+ /**
61
+ * Get result field metadata for a method.
62
+ * Use this to render results.
63
+ */
64
+ getResultMeta(methodName) {
65
+ return this.resultMeta?.[methodName];
66
+ }
67
+ /**
68
+ * Get all argument metadata.
69
+ */
70
+ getAllArgumentMeta() {
71
+ return this.argumentMeta;
72
+ }
73
+ /**
74
+ * Get all result metadata.
75
+ */
76
+ getAllResultMeta() {
77
+ return this.resultMeta;
78
+ }
79
+ // ══════════════════════════════════════════════════════════════════════════
80
+ // DYNAMIC METHOD REGISTRATION
81
+ // ══════════════════════════════════════════════════════════════════════════
82
+ /**
83
+ * Register a dynamic method by its Candid signature.
84
+ * After registration, all DisplayReactor methods work with display type transformations.
85
+ */
86
+ async registerMethod(options) {
87
+ await super.registerMethod(options);
88
+ // Regenerate metadata
89
+ this.generateMetadata();
90
+ }
91
+ // ══════════════════════════════════════════════════════════════════════════
92
+ // DYNAMIC CALL SHORTCUTS
93
+ // ══════════════════════════════════════════════════════════════════════════
94
+ transformResult(methodName, result) {
95
+ // Get metadata and generate resolved result
96
+ const meta = this.getResultMeta(methodName);
97
+ if (!meta) {
98
+ throw new Error(`No metadata found for method "${methodName}"`);
99
+ }
100
+ return meta.generateMetadata(result);
101
+ }
102
+ /**
103
+ * Perform a dynamic call and return result with metadata.
104
+ */
105
+ async callDynamicWithMeta(options) {
106
+ await this.registerMethod(options);
107
+ const result = (await this.callMethod({
108
+ functionName: options.functionName,
109
+ args: options.args,
110
+ }));
111
+ const meta = this.getResultMeta(options.functionName);
112
+ return { result, meta };
113
+ }
114
+ }
115
+ // Visitors (stateless, can be reused)
116
+ Object.defineProperty(MetadataDisplayReactor, "argVisitor", {
117
+ enumerable: true,
118
+ configurable: true,
119
+ writable: true,
120
+ value: new ArgumentFieldVisitor()
121
+ });
122
+ Object.defineProperty(MetadataDisplayReactor, "resultVisitor", {
123
+ enumerable: true,
124
+ configurable: true,
125
+ writable: true,
126
+ value: new ResultFieldVisitor()
127
+ });
128
+ //# sourceMappingURL=metadata-display-reactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-display-reactor.js","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { IDL } from "../types";
2
+ import type { ArgumentField, RecordArgumentField, VariantArgumentField, TupleArgumentField, OptionalArgumentField, VectorArgumentField, BlobArgumentField, RecursiveArgumentField, PrincipalArgumentField, NumberArgumentField, BooleanArgumentField, NullArgumentField, TextArgumentField, UnknownArgumentField, MethodArgumentsMeta, ServiceArgumentsMeta } from "./types";
3
+ import { BaseActor, FunctionName } from "@ic-reactor/core";
4
+ export * from "./types";
5
+ /**
6
+ * ArgumentFieldVisitor generates metadata for form input fields from Candid IDL types.
7
+ *
8
+ * ## Design Principles
9
+ *
10
+ * 1. **Works with raw IDL types** - generates metadata at initialization time
11
+ * 2. **No value dependencies** - metadata is independent of actual values
12
+ * 3. **Form-framework agnostic** - output can be used with TanStack, React Hook Form, etc.
13
+ * 4. **Efficient** - single traversal, no runtime type checking
14
+ *
15
+ * ## Output Structure
16
+ *
17
+ * Each field has:
18
+ * - `type`: The field type (record, variant, text, number, etc.)
19
+ * - `label`: Human-readable label from Candid
20
+ * - `path`: Dot-notation path for form binding (e.g., "0.owner")
21
+ * - `defaultValue`: Initial value for the form
22
+ * - Type-specific properties (options for variant, fields for record, etc.)
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const visitor = new ArgumentFieldVisitor()
27
+ * const serviceMeta = service.accept(visitor, null)
28
+ *
29
+ * // For a specific method
30
+ * const methodMeta = serviceMeta["icrc1_transfer"]
31
+ * // methodMeta.fields = [{ type: "record", fields: [...] }]
32
+ * // methodMeta.defaultValues = [{ to: "", amount: "" }]
33
+ * ```
34
+ */
35
+ export declare class ArgumentFieldVisitor<A = BaseActor> extends IDL.Visitor<string, ArgumentField | MethodArgumentsMeta<A> | ServiceArgumentsMeta<A>> {
36
+ private pathStack;
37
+ private withPath;
38
+ private currentPath;
39
+ private childPath;
40
+ visitService(t: IDL.ServiceClass): ServiceArgumentsMeta<A>;
41
+ visitFunc(t: IDL.FuncClass, functionName: FunctionName<A>): MethodArgumentsMeta<A>;
42
+ private extractDefaultValue;
43
+ visitRecord(_t: IDL.RecordClass, fields_: Array<[string, IDL.Type]>, label: string): RecordArgumentField;
44
+ visitVariant(_t: IDL.VariantClass, fields_: Array<[string, IDL.Type]>, label: string): VariantArgumentField;
45
+ visitTuple<T extends IDL.Type[]>(_t: IDL.TupleClass<T>, components: IDL.Type[], label: string): TupleArgumentField;
46
+ visitOpt<T>(_t: IDL.OptClass<T>, ty: IDL.Type<T>, label: string): OptionalArgumentField;
47
+ visitVec<T>(_t: IDL.VecClass<T>, ty: IDL.Type<T>, label: string): VectorArgumentField | BlobArgumentField;
48
+ visitRec<T>(_t: IDL.RecClass<T>, ty: IDL.ConstructType<T>, label: string): RecursiveArgumentField;
49
+ visitPrincipal(_t: IDL.PrincipalClass, label: string): PrincipalArgumentField;
50
+ visitText(_t: IDL.TextClass, label: string): TextArgumentField;
51
+ visitBool(_t: IDL.BoolClass, label: string): BooleanArgumentField;
52
+ visitNull(_t: IDL.NullClass, label: string): NullArgumentField;
53
+ private visitNumberType;
54
+ visitInt(_t: IDL.IntClass, label: string): NumberArgumentField;
55
+ visitNat(_t: IDL.NatClass, label: string): NumberArgumentField;
56
+ visitFloat(_t: IDL.FloatClass, label: string): NumberArgumentField;
57
+ visitFixedInt(t: IDL.FixedIntClass, label: string): NumberArgumentField;
58
+ visitFixedNat(t: IDL.FixedNatClass, label: string): NumberArgumentField;
59
+ visitType<T>(_t: IDL.Type<T>, label: string): UnknownArgumentField;
60
+ }
61
+ /**
62
+ * @deprecated Use ArgumentFieldVisitor instead
63
+ */
64
+ export { ArgumentFieldVisitor as VisitTanstackField };
65
+ /**
66
+ * @deprecated Use ArgumentField instead
67
+ */
68
+ export type { ArgumentField as TanstackAllArgTypes, MethodArgumentsMeta as TanstackMethodField, ServiceArgumentsMeta as TanstackServiceField, };
69
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitor/arguments/index.ts"],"names":[],"mappings":"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"}