@ic-reactor/candid 3.0.7-beta.2 → 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 (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 +425 -0
  32. package/dist/visitor/returns/index.js.map +1 -0
  33. package/dist/visitor/returns/types.d.ts +142 -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 +545 -0
  52. package/src/visitor/returns/types.ts +271 -0
  53. package/src/visitor/types.ts +29 -0
@@ -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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"}
@@ -0,0 +1,277 @@
1
+ import { isQuery } from "../helpers";
2
+ import { IDL } from "../types";
3
+ export * from "./types";
4
+ /**
5
+ * ArgumentFieldVisitor generates metadata for form input fields from Candid IDL types.
6
+ *
7
+ * ## Design Principles
8
+ *
9
+ * 1. **Works with raw IDL types** - generates metadata at initialization time
10
+ * 2. **No value dependencies** - metadata is independent of actual values
11
+ * 3. **Form-framework agnostic** - output can be used with TanStack, React Hook Form, etc.
12
+ * 4. **Efficient** - single traversal, no runtime type checking
13
+ *
14
+ * ## Output Structure
15
+ *
16
+ * Each field has:
17
+ * - `type`: The field type (record, variant, text, number, etc.)
18
+ * - `label`: Human-readable label from Candid
19
+ * - `path`: Dot-notation path for form binding (e.g., "0.owner")
20
+ * - `defaultValue`: Initial value for the form
21
+ * - Type-specific properties (options for variant, fields for record, etc.)
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const visitor = new ArgumentFieldVisitor()
26
+ * const serviceMeta = service.accept(visitor, null)
27
+ *
28
+ * // For a specific method
29
+ * const methodMeta = serviceMeta["icrc1_transfer"]
30
+ * // methodMeta.fields = [{ type: "record", fields: [...] }]
31
+ * // methodMeta.defaultValues = [{ to: "", amount: "" }]
32
+ * ```
33
+ */
34
+ export class ArgumentFieldVisitor extends IDL.Visitor {
35
+ constructor() {
36
+ super(...arguments);
37
+ Object.defineProperty(this, "pathStack", {
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true,
41
+ value: []
42
+ });
43
+ }
44
+ withPath(path, fn) {
45
+ this.pathStack.push(path);
46
+ try {
47
+ return fn();
48
+ }
49
+ finally {
50
+ this.pathStack.pop();
51
+ }
52
+ }
53
+ currentPath() {
54
+ return this.pathStack[this.pathStack.length - 1] ?? "";
55
+ }
56
+ childPath(key) {
57
+ const parent = this.currentPath();
58
+ if (typeof key === "number") {
59
+ return parent ? `${parent}[${key}]` : String(key);
60
+ }
61
+ return parent ? `${parent}.${key}` : key;
62
+ }
63
+ // ════════════════════════════════════════════════════════════════════════
64
+ // Service & Function Level
65
+ // ════════════════════════════════════════════════════════════════════════
66
+ visitService(t) {
67
+ const result = {};
68
+ for (const [functionName, func] of t._fields) {
69
+ result[functionName] = func.accept(this, functionName);
70
+ }
71
+ return result;
72
+ }
73
+ visitFunc(t, functionName) {
74
+ const functionType = isQuery(t) ? "query" : "update";
75
+ const fields = t.argTypes.map((arg, index) => {
76
+ return this.withPath(`[${index}]`, () => arg.accept(this, `__arg${index}`));
77
+ });
78
+ const defaultValues = fields.map((field) => this.extractDefaultValue(field));
79
+ return {
80
+ functionType,
81
+ functionName,
82
+ fields,
83
+ defaultValues,
84
+ };
85
+ }
86
+ extractDefaultValue(field) {
87
+ if ("defaultValue" in field) {
88
+ return field.defaultValue;
89
+ }
90
+ if ("defaultValues" in field) {
91
+ return field.defaultValues;
92
+ }
93
+ return undefined;
94
+ }
95
+ // ════════════════════════════════════════════════════════════════════════
96
+ // Compound Types
97
+ // ════════════════════════════════════════════════════════════════════════
98
+ visitRecord(_t, fields_, label) {
99
+ const path = this.currentPath();
100
+ const fields = [];
101
+ const defaultValues = {};
102
+ for (const [key, type] of fields_) {
103
+ const field = this.withPath(this.childPath(key), () => type.accept(this, key));
104
+ fields.push(field);
105
+ defaultValues[key] = this.extractDefaultValue(field);
106
+ }
107
+ return {
108
+ type: "record",
109
+ label,
110
+ path,
111
+ fields,
112
+ defaultValues,
113
+ };
114
+ }
115
+ visitVariant(_t, fields_, label) {
116
+ const path = this.currentPath();
117
+ const fields = [];
118
+ const options = [];
119
+ for (const [key, type] of fields_) {
120
+ const field = this.withPath(this.childPath(key), () => type.accept(this, key));
121
+ fields.push(field);
122
+ options.push(key);
123
+ }
124
+ const defaultOption = options[0];
125
+ const defaultValues = {
126
+ [defaultOption]: this.extractDefaultValue(fields[0]),
127
+ };
128
+ return {
129
+ type: "variant",
130
+ label,
131
+ path,
132
+ fields,
133
+ options,
134
+ defaultOption,
135
+ defaultValues,
136
+ };
137
+ }
138
+ visitTuple(_t, components, label) {
139
+ const path = this.currentPath();
140
+ const fields = [];
141
+ const defaultValues = [];
142
+ for (let index = 0; index < components.length; index++) {
143
+ const type = components[index];
144
+ const field = this.withPath(this.childPath(index), () => type.accept(this, `_${index}_`));
145
+ fields.push(field);
146
+ defaultValues.push(this.extractDefaultValue(field));
147
+ }
148
+ return {
149
+ type: "tuple",
150
+ label,
151
+ path,
152
+ fields,
153
+ defaultValues,
154
+ };
155
+ }
156
+ visitOpt(_t, ty, label) {
157
+ const path = this.currentPath();
158
+ const innerField = this.withPath(this.childPath(0), () => ty.accept(this, label));
159
+ return {
160
+ type: "optional",
161
+ label,
162
+ path,
163
+ innerField,
164
+ defaultValue: null,
165
+ };
166
+ }
167
+ visitVec(_t, ty, label) {
168
+ const path = this.currentPath();
169
+ // Check if it's blob (vec nat8)
170
+ const isBlob = ty instanceof IDL.FixedNatClass && ty._bits === 8;
171
+ const itemField = this.withPath(this.childPath(0), () => ty.accept(this, label));
172
+ if (isBlob) {
173
+ return {
174
+ type: "blob",
175
+ label,
176
+ path,
177
+ itemField,
178
+ defaultValue: "",
179
+ };
180
+ }
181
+ return {
182
+ type: "vector",
183
+ label,
184
+ path,
185
+ itemField,
186
+ defaultValue: [],
187
+ };
188
+ }
189
+ visitRec(_t, ty, label) {
190
+ const path = this.currentPath();
191
+ return {
192
+ type: "recursive",
193
+ label,
194
+ path,
195
+ // Lazy extraction to prevent infinite loops
196
+ extract: () => this.withPath(path, () => ty.accept(this, label)),
197
+ };
198
+ }
199
+ // ════════════════════════════════════════════════════════════════════════
200
+ // Primitive Types
201
+ // ════════════════════════════════════════════════════════════════════════
202
+ visitPrincipal(_t, label) {
203
+ return {
204
+ type: "principal",
205
+ label,
206
+ path: this.currentPath(),
207
+ defaultValue: "",
208
+ maxLength: 64,
209
+ minLength: 7,
210
+ };
211
+ }
212
+ visitText(_t, label) {
213
+ return {
214
+ type: "text",
215
+ label,
216
+ path: this.currentPath(),
217
+ defaultValue: "",
218
+ };
219
+ }
220
+ visitBool(_t, label) {
221
+ return {
222
+ type: "boolean",
223
+ label,
224
+ path: this.currentPath(),
225
+ defaultValue: false,
226
+ };
227
+ }
228
+ visitNull(_t, label) {
229
+ return {
230
+ type: "null",
231
+ label,
232
+ path: this.currentPath(),
233
+ defaultValue: null,
234
+ };
235
+ }
236
+ // Numbers - all use string for display format
237
+ visitNumberType(label, candidType) {
238
+ return {
239
+ type: "number",
240
+ label,
241
+ path: this.currentPath(),
242
+ defaultValue: "",
243
+ candidType,
244
+ };
245
+ }
246
+ visitInt(_t, label) {
247
+ return this.visitNumberType(label, "int");
248
+ }
249
+ visitNat(_t, label) {
250
+ return this.visitNumberType(label, "nat");
251
+ }
252
+ visitFloat(_t, label) {
253
+ return this.visitNumberType(label, "float");
254
+ }
255
+ visitFixedInt(t, label) {
256
+ return this.visitNumberType(label, `int${t._bits}`);
257
+ }
258
+ visitFixedNat(t, label) {
259
+ return this.visitNumberType(label, `nat${t._bits}`);
260
+ }
261
+ visitType(_t, label) {
262
+ return {
263
+ type: "unknown",
264
+ label,
265
+ path: this.currentPath(),
266
+ defaultValue: undefined,
267
+ };
268
+ }
269
+ }
270
+ // ════════════════════════════════════════════════════════════════════════════
271
+ // Legacy Exports (for backward compatibility)
272
+ // ════════════════════════════════════════════════════════════════════════════
273
+ /**
274
+ * @deprecated Use ArgumentFieldVisitor instead
275
+ */
276
+ export { ArgumentFieldVisitor as VisitTanstackField };
277
+ //# sourceMappingURL=index.js.map