@ic-reactor/candid 3.0.1-beta.0 → 3.0.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 (83) hide show
  1. package/README.md +33 -1
  2. package/dist/adapter.js +2 -1
  3. package/dist/adapter.js.map +1 -1
  4. package/dist/display-reactor.d.ts +179 -0
  5. package/dist/display-reactor.d.ts.map +1 -0
  6. package/dist/display-reactor.js +294 -0
  7. package/dist/display-reactor.js.map +1 -0
  8. package/dist/index.d.ts +4 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +4 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/metadata-display-reactor.d.ts +108 -0
  13. package/dist/metadata-display-reactor.d.ts.map +1 -0
  14. package/dist/metadata-display-reactor.js +141 -0
  15. package/dist/metadata-display-reactor.js.map +1 -0
  16. package/dist/reactor.d.ts +1 -1
  17. package/dist/reactor.d.ts.map +1 -1
  18. package/dist/reactor.js +10 -6
  19. package/dist/reactor.js.map +1 -1
  20. package/dist/types.d.ts +38 -7
  21. package/dist/types.d.ts.map +1 -1
  22. package/dist/utils.d.ts +4 -4
  23. package/dist/utils.d.ts.map +1 -1
  24. package/dist/utils.js +33 -10
  25. package/dist/utils.js.map +1 -1
  26. package/dist/visitor/arguments/helpers.d.ts +55 -0
  27. package/dist/visitor/arguments/helpers.d.ts.map +1 -0
  28. package/dist/visitor/arguments/helpers.js +123 -0
  29. package/dist/visitor/arguments/helpers.js.map +1 -0
  30. package/dist/visitor/arguments/index.d.ts +101 -0
  31. package/dist/visitor/arguments/index.d.ts.map +1 -0
  32. package/dist/visitor/arguments/index.js +779 -0
  33. package/dist/visitor/arguments/index.js.map +1 -0
  34. package/dist/visitor/arguments/types.d.ts +268 -0
  35. package/dist/visitor/arguments/types.d.ts.map +1 -0
  36. package/dist/visitor/arguments/types.js +26 -0
  37. package/dist/visitor/arguments/types.js.map +1 -0
  38. package/dist/visitor/constants.d.ts +4 -0
  39. package/dist/visitor/constants.d.ts.map +1 -0
  40. package/dist/visitor/constants.js +73 -0
  41. package/dist/visitor/constants.js.map +1 -0
  42. package/dist/visitor/helpers.d.ts +30 -0
  43. package/dist/visitor/helpers.d.ts.map +1 -0
  44. package/dist/visitor/helpers.js +204 -0
  45. package/dist/visitor/helpers.js.map +1 -0
  46. package/dist/visitor/index.d.ts +5 -0
  47. package/dist/visitor/index.d.ts.map +1 -0
  48. package/dist/visitor/index.js +5 -0
  49. package/dist/visitor/index.js.map +1 -0
  50. package/dist/visitor/returns/index.d.ts +38 -0
  51. package/dist/visitor/returns/index.d.ts.map +1 -0
  52. package/dist/visitor/returns/index.js +460 -0
  53. package/dist/visitor/returns/index.js.map +1 -0
  54. package/dist/visitor/returns/types.d.ts +202 -0
  55. package/dist/visitor/returns/types.d.ts.map +1 -0
  56. package/dist/visitor/returns/types.js +2 -0
  57. package/dist/visitor/returns/types.js.map +1 -0
  58. package/dist/visitor/types.d.ts +19 -0
  59. package/dist/visitor/types.d.ts.map +1 -0
  60. package/dist/visitor/types.js +2 -0
  61. package/dist/visitor/types.js.map +1 -0
  62. package/package.json +18 -9
  63. package/src/adapter.ts +446 -0
  64. package/src/constants.ts +11 -0
  65. package/src/display-reactor.ts +337 -0
  66. package/src/index.ts +8 -0
  67. package/src/metadata-display-reactor.ts +230 -0
  68. package/src/reactor.ts +199 -0
  69. package/src/types.ts +127 -0
  70. package/src/utils.ts +60 -0
  71. package/src/visitor/arguments/helpers.ts +153 -0
  72. package/src/visitor/arguments/index.test.ts +1439 -0
  73. package/src/visitor/arguments/index.ts +980 -0
  74. package/src/visitor/arguments/schema.test.ts +324 -0
  75. package/src/visitor/arguments/types.ts +385 -0
  76. package/src/visitor/constants.ts +76 -0
  77. package/src/visitor/helpers.test.ts +274 -0
  78. package/src/visitor/helpers.ts +223 -0
  79. package/src/visitor/index.ts +4 -0
  80. package/src/visitor/returns/index.test.ts +2377 -0
  81. package/src/visitor/returns/index.ts +658 -0
  82. package/src/visitor/returns/types.ts +302 -0
  83. package/src/visitor/types.ts +75 -0
@@ -0,0 +1,108 @@
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 { ArgumentsMeta, ArgumentsServiceMeta } from "./visitor/arguments";
5
+ import { MethodMeta, MethodResult, ServiceMeta } 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
+ * ## 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
+ * ```
41
+ */
42
+ declare module "@ic-reactor/core" {
43
+ interface TransformArgsRegistry<T> {
44
+ metadata: TransformArgsRegistry<T>["display"];
45
+ }
46
+ interface TransformReturnRegistry<T, A = BaseActor> {
47
+ metadata: MethodResult<A>;
48
+ }
49
+ }
50
+ export declare class MetadataDisplayReactor<A = BaseActor> extends CandidDisplayReactor<A, "metadata"> {
51
+ readonly transform: "metadata";
52
+ private argumentMeta;
53
+ private resultMeta;
54
+ private static argVisitor;
55
+ private static resultVisitor;
56
+ constructor(config: CandidDisplayReactorParameters<A>);
57
+ /**
58
+ * Initializes the reactor by parsing Candid and generating all metadata.
59
+ */
60
+ initialize(): Promise<void>;
61
+ /**
62
+ * Generate all metadata from the service interface using visitors.
63
+ */
64
+ private generateMetadata;
65
+ /**
66
+ * Get input field metadata for a method.
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
71
+ */
72
+ getInputMeta<M extends FunctionName<A>>(methodName: M): ArgumentsMeta<A, M> | undefined;
73
+ /**
74
+ * Get output field metadata for a method.
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
79
+ */
80
+ getOutputMeta<M extends FunctionName<A>>(methodName: M): MethodMeta<A, M> | undefined;
81
+ /**
82
+ * Get all input metadata for all methods.
83
+ */
84
+ getAllInputMeta(): ArgumentsServiceMeta<A> | null;
85
+ /**
86
+ * Get all output metadata for all methods.
87
+ */
88
+ getAllOutputMeta(): ServiceMeta<A> | null;
89
+ /**
90
+ * Register a dynamic method by its Candid signature.
91
+ * After registration, all DisplayReactor methods work with display type transformations.
92
+ */
93
+ registerMethod(options: DynamicMethodOptions): Promise<void>;
94
+ protected transformResult<M extends FunctionName<A>>(methodName: M, result: ActorMethodReturnType<A[M]>): MethodResult<A>;
95
+ /**
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
100
+ */
101
+ callDynamicWithMeta<T = unknown>(options: DynamicMethodOptions & {
102
+ args?: unknown[];
103
+ }): Promise<{
104
+ result: T;
105
+ meta: MethodMeta<A>;
106
+ }>;
107
+ }
108
+ //# 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,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;IAarD;;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"}
@@ -0,0 +1,141 @@
1
+ import { CandidDisplayReactor } from "./display-reactor";
2
+ import { FieldVisitor, MetadataError, } 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
+ // If funcClass was provided, metadata is ready immediately
27
+ if (config.funcClass || config.idlFactory) {
28
+ this.generateMetadata();
29
+ }
30
+ }
31
+ // ══════════════════════════════════════════════════════════════════════════
32
+ // INITIALIZATION
33
+ // ══════════════════════════════════════════════════════════════════════════
34
+ /**
35
+ * Initializes the reactor by parsing Candid and generating all metadata.
36
+ */
37
+ async initialize() {
38
+ await super.initialize();
39
+ // Generate metadata using visitors
40
+ this.generateMetadata();
41
+ }
42
+ /**
43
+ * Generate all metadata from the service interface using visitors.
44
+ */
45
+ generateMetadata() {
46
+ const service = this.getServiceInterface();
47
+ if (!service)
48
+ return;
49
+ // Generate argument metadata
50
+ this.argumentMeta = service.accept(MetadataDisplayReactor.argVisitor, null);
51
+ // Generate result metadata
52
+ this.resultMeta = service.accept(MetadataDisplayReactor.resultVisitor, null);
53
+ }
54
+ // ══════════════════════════════════════════════════════════════════════════
55
+ // METADATA ACCESS
56
+ // ══════════════════════════════════════════════════════════════════════════
57
+ /**
58
+ * Get input field metadata for a method.
59
+ * Use this to generate input forms.
60
+ *
61
+ * @param methodName The method name to get metadata for
62
+ * @returns ArgumentsMeta containing args, defaults, and validation schema
63
+ */
64
+ getInputMeta(methodName) {
65
+ return this.argumentMeta?.[methodName];
66
+ }
67
+ /**
68
+ * Get output field metadata for a method.
69
+ * Use this to render results.
70
+ *
71
+ * @param methodName The method name to get metadata for
72
+ * @returns MethodMeta containing return schema and resolve function
73
+ */
74
+ getOutputMeta(methodName) {
75
+ return this.resultMeta?.[methodName];
76
+ }
77
+ /**
78
+ * Get all input metadata for all methods.
79
+ */
80
+ getAllInputMeta() {
81
+ return this.argumentMeta;
82
+ }
83
+ /**
84
+ * Get all output metadata for all methods.
85
+ */
86
+ getAllOutputMeta() {
87
+ return this.resultMeta;
88
+ }
89
+ // ══════════════════════════════════════════════════════════════════════════
90
+ // DYNAMIC METHOD REGISTRATION
91
+ // ══════════════════════════════════════════════════════════════════════════
92
+ /**
93
+ * Register a dynamic method by its Candid signature.
94
+ * After registration, all DisplayReactor methods work with display type transformations.
95
+ */
96
+ async registerMethod(options) {
97
+ await super.registerMethod(options);
98
+ // Regenerate metadata
99
+ this.generateMetadata();
100
+ }
101
+ // ══════════════════════════════════════════════════════════════════════════
102
+ // DYNAMIC CALL SHORTCUTS
103
+ // ══════════════════════════════════════════════════════════════════════════
104
+ transformResult(methodName, result) {
105
+ // Get metadata and generate resolved result
106
+ const meta = this.getOutputMeta(methodName);
107
+ if (!meta) {
108
+ throw new MetadataError(`No output metadata found for method`, String(methodName), "method");
109
+ }
110
+ return meta.resolve(result);
111
+ }
112
+ /**
113
+ * Perform a dynamic call and return result with metadata.
114
+ *
115
+ * @param options Method registration and call options
116
+ * @returns Object containing the result and metadata
117
+ */
118
+ async callDynamicWithMeta(options) {
119
+ await this.registerMethod(options);
120
+ const result = (await this.callMethod({
121
+ functionName: options.functionName,
122
+ args: options.args,
123
+ }));
124
+ const meta = this.getOutputMeta(options.functionName);
125
+ return { result, meta };
126
+ }
127
+ }
128
+ // Visitors (stateless, can be reused)
129
+ Object.defineProperty(MetadataDisplayReactor, "argVisitor", {
130
+ enumerable: true,
131
+ configurable: true,
132
+ writable: true,
133
+ value: new FieldVisitor()
134
+ });
135
+ Object.defineProperty(MetadataDisplayReactor, "resultVisitor", {
136
+ enumerable: true,
137
+ configurable: true,
138
+ writable: true,
139
+ value: new ResultFieldVisitor()
140
+ });
141
+ //# 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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"}
package/dist/reactor.d.ts CHANGED
@@ -5,7 +5,7 @@ import { CandidAdapter } from "./adapter";
5
5
  export declare class CandidReactor<A = BaseActor> extends Reactor<A> {
6
6
  adapter: CandidAdapter;
7
7
  private candidSource?;
8
- constructor(config: CandidReactorParameters<A>);
8
+ constructor(config: CandidReactorParameters);
9
9
  /**
10
10
  * Initializes the reactor by parsing the provided Candid string or fetching it from the network.
11
11
  * This updates the internal service definition with the actual canister interface.
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../src/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE5E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAGzC,qBAAa,aAAa,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACnD,OAAO,EAAE,aAAa,CAAA;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAQ;gBAEjB,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAgB9C;;;;;OAKG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcxC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BzE;;OAEG;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;;;;;;;;;;;;OAYG;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;;;;;;;;;;;;OAYG;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":"reactor.d.ts","sourceRoot":"","sources":["../src/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE5E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAGzC,qBAAa,aAAa,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACnD,OAAO,EAAE,aAAa,CAAA;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAQ;gBAEjB,MAAM,EAAE,uBAAuB;IAmB3C;;;;;OAKG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcxC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BzE;;OAEG;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;;;;;;;;;;;;OAYG;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;;;;;;;;;;;;OAYG;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"}
package/dist/reactor.js CHANGED
@@ -3,10 +3,9 @@ import { CandidAdapter } from "./adapter";
3
3
  import { IDL } from "@icp-sdk/core/candid";
4
4
  export class CandidReactor extends Reactor {
5
5
  constructor(config) {
6
- // If idlFactory/actor are missing, use a dummy one to satisfy Reactor constructor
7
6
  const superConfig = { ...config };
8
- if (!superConfig.idlFactory && !superConfig.actor) {
9
- superConfig.idlFactory = (config) => config.IDL.Service({});
7
+ if (!superConfig.idlFactory) {
8
+ superConfig.idlFactory = ({ IDL }) => IDL.Service({});
10
9
  }
11
10
  super(superConfig);
12
11
  Object.defineProperty(this, "adapter", {
@@ -22,9 +21,14 @@ export class CandidReactor extends Reactor {
22
21
  value: void 0
23
22
  });
24
23
  this.candidSource = config.candid;
25
- this.adapter = new CandidAdapter({
26
- clientManager: this.clientManager,
27
- });
24
+ if (config.adapter) {
25
+ this.adapter = config.adapter;
26
+ }
27
+ else {
28
+ this.adapter = new CandidAdapter({
29
+ clientManager: this.clientManager,
30
+ });
31
+ }
28
32
  }
29
33
  /**
30
34
  * Initializes the reactor by parsing the provided Candid string or fetching it from the network.
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../src/reactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../src/reactor.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { HttpAgent, Identity } from "@icp-sdk/core/agent";
2
2
  import type { IDL } from "@icp-sdk/core/candid";
3
- import type { BaseActor, CanisterId, ReactorParameters } from "@ic-reactor/core";
3
+ import type { BaseActor, CanisterId, DisplayReactorParameters, ReactorParameters } from "@ic-reactor/core";
4
+ import type { CandidAdapter } from "./adapter";
4
5
  export interface DynamicMethodOptions {
5
6
  /** The method name to register. */
6
7
  functionName: string;
@@ -11,15 +12,45 @@ export interface DynamicMethodOptions {
11
12
  */
12
13
  candid: string;
13
14
  }
14
- export interface CandidReactorParameters<A = BaseActor> extends Omit<ReactorParameters<A>, "idlFactory" | "actor"> {
15
+ export interface CandidReactorParameters extends Omit<ReactorParameters, "idlFactory"> {
15
16
  /** The canister ID. */
16
- canisterId: CanisterId;
17
- /** The Candid source code. */
17
+ canisterId?: CanisterId;
18
+ /** The Candid source code. If not provided, the canister's Candid will be fetched. */
18
19
  candid?: string;
19
20
  /** The IDL interface factory. */
20
- idlFactory?: IDL.InterfaceFactory;
21
- /** The actor instance. */
22
- actor?: A;
21
+ idlFactory?: (IDL: any) => any;
22
+ /** The Candid adapter. */
23
+ adapter?: CandidAdapter;
24
+ }
25
+ export interface CandidDisplayReactorParameters<A = BaseActor> extends Omit<DisplayReactorParameters<A>, "idlFactory"> {
26
+ /** The canister ID. */
27
+ canisterId?: CanisterId;
28
+ /** The Candid source code. If not provided, the canister's Candid will be fetched. */
29
+ candid?: string;
30
+ /** The IDL interface factory. */
31
+ idlFactory?: (IDL: any) => any;
32
+ /** The Candid adapter. */
33
+ adapter?: CandidAdapter;
34
+ /**
35
+ * An IDL.FuncClass to register as a single-method service.
36
+ * Use this to create a reactor for a funcRecord callback.
37
+ * When provided, the reactor is ready to use immediately (no `initialize()` needed).
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const archiveReactor = new CandidDisplayReactor({
42
+ * canisterId: archived.canisterId,
43
+ * clientManager,
44
+ * funcClass: { methodName: "get_blocks", func: archiveFuncClass },
45
+ * })
46
+ * ```
47
+ */
48
+ funcClass?: {
49
+ /** The method name to register */
50
+ methodName: string;
51
+ /** The IDL.FuncClass describing the function signature */
52
+ func: import("@icp-sdk/core/candid").IDL.FuncClass;
53
+ };
23
54
  }
24
55
  /**
25
56
  * Minimal interface for ClientManager that CandidAdapter depends on.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEhF,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,IAAI,CAClE,iBAAiB,CAAC,CAAC,CAAC,EACpB,YAAY,GAAG,OAAO,CACvB;IACC,uBAAuB;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,UAAU,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAA;IACjC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,CAAC,CAAA;CACV;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,KAAK,EAAE,SAAS,CAAA;IAChB,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAA;IAChB,sEAAsE;IACtE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,kEAAkE;IAClE,aAAa,EAAE,mBAAmB,CAAA;IAClC,gFAAgF;IAChF,eAAe,CAAC,EAAE,UAAU,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAA;IAChC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,OAAO,GAAG,CAAA;KAAE,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B;;;;OAIG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;IACrC;;;;OAIG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAA;CAC3C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE9C,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CACnD,iBAAiB,EACjB,YAAY,CACb;IACC,uBAAuB;IACvB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAA;IAC9B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AAMD,MAAM,WAAW,8BAA8B,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,IAAI,CACzE,wBAAwB,CAAC,CAAC,CAAC,EAC3B,YAAY,CACb;IACC,uBAAuB;IACvB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAA;IAC9B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE;QACV,kCAAkC;QAClC,UAAU,EAAE,MAAM,CAAA;QAClB,0DAA0D;QAC1D,IAAI,EAAE,OAAO,sBAAsB,EAAE,GAAG,CAAC,SAAS,CAAA;KACnD,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,KAAK,EAAE,SAAS,CAAA;IAChB,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAA;IAChB,sEAAsE;IACtE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,kEAAkE;IAClE,aAAa,EAAE,mBAAmB,CAAA;IAClC,gFAAgF;IAChF,eAAe,CAAC,EAAE,UAAU,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAA;IAChC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,OAAO,GAAG,CAAA;KAAE,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B;;;;OAIG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;IACrC;;;;OAIG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAA;CAC3C"}
package/dist/utils.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import type { CandidDefinition } from "./types";
2
- /**
3
- * A no-operation function placeholder.
4
- */
5
- export declare const noop: () => void;
6
2
  /**
7
3
  * Imports and evaluates a Candid definition from JavaScript code.
8
4
  *
5
+ * This function evaluates JavaScript code in a controlled manner to extract
6
+ * the idlFactory and init exports. The evaluation is done using Function constructor
7
+ * which is safer than dynamic imports with data URLs and more CSP-friendly.
8
+ *
9
9
  * @param candidJs - The JavaScript code containing the Candid definition.
10
10
  * @returns A promise that resolves to the CandidDefinition.
11
11
  * @throws Error if the import fails.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,IAAI,YAAW,CAAA;AAE5B;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAgB3B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG/C;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CA2C3B"}
package/dist/utils.js CHANGED
@@ -1,23 +1,46 @@
1
- /**
2
- * A no-operation function placeholder.
3
- */
4
- export const noop = () => { };
1
+ import { IDL } from "@icp-sdk/core/candid";
5
2
  /**
6
3
  * Imports and evaluates a Candid definition from JavaScript code.
7
4
  *
5
+ * This function evaluates JavaScript code in a controlled manner to extract
6
+ * the idlFactory and init exports. The evaluation is done using Function constructor
7
+ * which is safer than dynamic imports with data URLs and more CSP-friendly.
8
+ *
8
9
  * @param candidJs - The JavaScript code containing the Candid definition.
9
10
  * @returns A promise that resolves to the CandidDefinition.
10
11
  * @throws Error if the import fails.
11
12
  */
12
13
  export async function importCandidDefinition(candidJs) {
13
14
  try {
14
- // Create a data URL with the JavaScript code
15
- const dataUri = "data:text/javascript;charset=utf-8," + encodeURIComponent(candidJs);
16
- // Dynamically import the module
17
- const module = await import(/* webpackIgnore: true */ dataUri);
15
+ // Create a module exports object
16
+ const exports = {};
17
+ // Transform ES6 export statements to assignments
18
+ // This is safe because we're only transforming the syntax pattern,
19
+ // not evaluating arbitrary code
20
+ const transformedJs = candidJs
21
+ // Replace 'export const name = value' with 'const name = value; exports.name = name'
22
+ .replace(/export\s+const\s+(\w+)\s*=/g, "const $1 =")
23
+ // Replace 'export function name' with 'function name'
24
+ .replace(/export\s+function\s+(\w+)/g, "function $1");
25
+ // Create a safe evaluation context with necessary globals
26
+ // We provide IDL from the trusted @icp-sdk/core/candid package
27
+ const evalFunction = new Function("exports", "IDL", `
28
+ ${transformedJs}
29
+
30
+ // Capture exports
31
+ if (typeof idlFactory !== 'undefined') {
32
+ exports.idlFactory = idlFactory;
33
+ }
34
+ if (typeof init !== 'undefined') {
35
+ exports.init = init;
36
+ }
37
+ return exports;
38
+ `);
39
+ // Execute the function with the exports object and IDL
40
+ const result = evalFunction(exports, IDL);
18
41
  return {
19
- idlFactory: module.idlFactory,
20
- init: module.init,
42
+ idlFactory: result.idlFactory,
43
+ init: result.init,
21
44
  };
22
45
  }
23
46
  catch (error) {
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAE5B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB;IAEhB,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,OAAO,GACX,qCAAqC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QAEtE,gCAAgC;QAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAA;QAE9D,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAA;IACjE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB;IAEhB,IAAI,CAAC;QACH,iCAAiC;QACjC,MAAM,OAAO,GAA4B,EAAE,CAAA;QAE3C,iDAAiD;QACjD,mEAAmE;QACnE,gCAAgC;QAChC,MAAM,aAAa,GAAG,QAAQ;YAC5B,qFAAqF;aACpF,OAAO,CAAC,6BAA6B,EAAE,YAAY,CAAC;YACrD,sDAAsD;aACrD,OAAO,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAA;QAEvD,0DAA0D;QAC1D,+DAA+D;QAC/D,MAAM,YAAY,GAAG,IAAI,QAAQ,CAC/B,SAAS,EACT,KAAK,EACL;QACE,aAAa;;;;;;;;;;OAUd,CACF,CAAA;QAED,uDAAuD;QACvD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAEzC,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAA4C;YAC/D,IAAI,EAAE,MAAM,CAAC,IAAgC;SAC9C,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAA;IACjE,CAAC;AACH,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { VisitorDataType, CompoundField, FieldNode, FieldByType, PrimitiveField, RecordField, TupleField, VariantField } from "./types";
2
+ /**
3
+ * Type guard for checking specific field types.
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * function FieldInput({ field }: { field: FieldNode }) {
8
+ * if (isFieldType(field, 'record')) {
9
+ * // field is now typed as RecordField
10
+ * return <RecordInput field={field} />
11
+ * }
12
+ * if (isFieldType(field, 'text')) {
13
+ * // field is now typed as TextField
14
+ * return <TextInput field={field} />
15
+ * }
16
+ * // ...
17
+ * }
18
+ * ```
19
+ */
20
+ export declare function isFieldType<T extends VisitorDataType>(field: FieldNode, type: T): field is FieldByType<T>;
21
+ /**
22
+ * Check if a field is a compound type (contains other fields).
23
+ * Compound types: record, variant, tuple, optional, vector, recursive
24
+ */
25
+ export declare function isCompoundField(field: FieldNode): field is CompoundField;
26
+ /**
27
+ * Check if a field is a primitive type.
28
+ * Primitive types: principal, number, text, boolean, null
29
+ */
30
+ export declare function isPrimitiveField(field: FieldNode): field is PrimitiveField;
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;
41
+ /**
42
+ * Format a raw Candid label into a human-readable display label.
43
+ * Handles common patterns like "__arg0", "_0_", "snake_case", etc.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * formatLabel("__arg0") // "Arg 0"
48
+ * formatLabel("_0_") // "Item 0"
49
+ * formatLabel("created_at") // "Created At"
50
+ * formatLabel("userAddress") // "User Address"
51
+ * formatLabel("__ret0") // "Result 0"
52
+ * ```
53
+ */
54
+ export declare function formatLabel(label: string): string;
55
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +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;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,CA8CjD"}