@ic-reactor/candid 3.0.8-beta.2 → 3.0.10-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.
@@ -1,426 +1,276 @@
1
1
  import { isQuery } from "../helpers";
2
2
  import { checkTextFormat, checkNumberFormat } from "../constants";
3
3
  import { IDL } from "../types";
4
+ export * from "./types";
4
5
  import { DisplayCodecVisitor } from "@ic-reactor/core";
5
6
  export * from "./types";
6
7
  /**
7
- * ResultFieldVisitor generates metadata for displaying method results from Candid IDL types.
8
- *
9
- * ## Design Principles
10
- *
11
- * 1. **Works with raw IDL types BEFORE transformation** - generates metadata at initialization
12
- * 2. **No value dependencies** - metadata describes structure, not specific values
13
- * 3. **Describes display format** - includes hints for how values will appear after transformation
14
- * 4. **Efficient** - single traversal, reusable metadata
15
- * 5. **Resolvable** - metadata can be combined with values at runtime via .resolve(val)
16
- *
17
- * ## Key Insight: Metadata vs Values
18
- *
19
- * The visitor generates a "schema" that describes:
20
- * - What type each field is in Candid (nat, Principal, opt, etc.)
21
- * - What it becomes after display transformation (string, null, etc.)
22
- * - How it should be formatted (timestamp, cycle, hex, etc.)
23
- *
24
- * Values are NOT passed during traversal. Instead, the generated schema
25
- * is used at render time to properly display transformed values.
26
- *
27
- * ## Display Transformations (applied by DisplayCodecVisitor)
28
- *
29
- * | Candid Type | Display Type | Notes |
30
- * |-------------|--------------|-------|
31
- * | nat, int, nat64, int64 | string | BigInt → string |
32
- * | Principal | string | Principal.toText() |
33
- * | opt T | T \| null | [value] → value, [] → null |
34
- * | vec nat8 (blob) | string | Uint8Array → hex string |
35
- * | variant { Ok, Err } | unwrapped | { Ok: val } → val (or throws on Err) |
36
- *
37
- * @example
38
- * ```typescript
39
- * const visitor = new ResultFieldVisitor()
40
- * const serviceMeta = service.accept(visitor, null)
41
- *
42
- * // Get method result metadata
43
- * const methodMeta = serviceMeta["icrc1_balance_of"]
44
- * // methodMeta.resultFields[0] = {
45
- * // type: "number",
46
- * // candidType: "nat",
47
- * // displayType: "string",
48
- * // numberFormat: "normal"
49
- * // }
50
- *
51
- * // At render time, apply to transformed value:
52
- * const transformedResult = "1000000000" // Already transformed by DisplayCodec
53
- * renderField(methodMeta.resultFields[0], transformedResult)
54
- * ```
8
+ * Creates a primitive node with automatic resolve implementation.
55
9
  */
10
+ function primitiveNode(type, label, candidType, displayType, codec, extras = {}) {
11
+ const node = {
12
+ type,
13
+ label,
14
+ candidType,
15
+ displayType,
16
+ ...extras,
17
+ resolve(data) {
18
+ return {
19
+ ...node,
20
+ value: codec.decode(data),
21
+ raw: data,
22
+ };
23
+ },
24
+ };
25
+ return node;
26
+ }
27
+ // ════════════════════════════════════════════════════════════════════════════
28
+ // Simplified Result Field Visitor
29
+ // ════════════════════════════════════════════════════════════════════════════
56
30
  export class ResultFieldVisitor extends IDL.Visitor {
57
31
  constructor() {
58
32
  super(...arguments);
59
- Object.defineProperty(this, "displayVisitor", {
33
+ Object.defineProperty(this, "codec", {
60
34
  enumerable: true,
61
35
  configurable: true,
62
36
  writable: true,
63
37
  value: new DisplayCodecVisitor()
64
38
  });
65
39
  }
66
- // ════════════════════════════════════════════════════════════════════════
67
- // Service & Function Level
68
- // ════════════════════════════════════════════════════════════════════════
40
+ getCodec(t) {
41
+ return t.accept(this.codec, null);
42
+ }
43
+ // ══════════════════════════════════════════════════════════════════════════
44
+ // Service & Function
45
+ // ══════════════════════════════════════════════════════════════════════════
69
46
  visitService(t) {
70
47
  const result = {};
71
- for (const [functionName, func] of t._fields) {
72
- result[functionName] = func.accept(this, functionName);
48
+ for (const [name, func] of t._fields) {
49
+ result[name] = func.accept(this, name);
73
50
  }
74
51
  return result;
75
52
  }
76
53
  visitFunc(t, functionName) {
77
54
  const functionType = isQuery(t) ? "query" : "update";
78
- const resultFields = t.retTypes.map((retType, index) => retType.accept(this, `__ret${index}`));
79
- const generateMetadata = (data) => {
80
- const dataArray = resultFields.length === 0
81
- ? []
82
- : resultFields.length === 1
83
- ? [data]
84
- : data;
85
- const results = resultFields.map((field, index) => field.resolve(dataArray[index]));
86
- return {
87
- functionType,
88
- functionName,
89
- results,
90
- raw: data,
91
- };
92
- };
55
+ const returns = t.retTypes.map((ret, i) => ret.accept(this, `__ret${i}`));
93
56
  return {
94
57
  functionType,
95
58
  functionName,
96
- resultFields,
59
+ returns,
97
60
  returnCount: t.retTypes.length,
98
- generateMetadata,
61
+ resolve: (data) => {
62
+ const dataArray = returns.length <= 1 ? [data] : data;
63
+ return {
64
+ functionType,
65
+ functionName,
66
+ results: returns.map((node, i) => node.resolve(dataArray[i])),
67
+ raw: data,
68
+ };
69
+ },
99
70
  };
100
71
  }
101
- // ════════════════════════════════════════════════════════════════════════
72
+ // ══════════════════════════════════════════════════════════════════════════
102
73
  // Compound Types
103
- // ════════════════════════════════════════════════════════════════════════
74
+ // ══════════════════════════════════════════════════════════════════════════
104
75
  visitRecord(_t, fields_, label) {
105
- const fields = fields_.map(([key, type]) => type.accept(this, key));
106
- const field = {
76
+ const fields = {};
77
+ for (const [key, type] of fields_) {
78
+ fields[key] = type.accept(this, key);
79
+ }
80
+ const node = {
107
81
  type: "record",
108
82
  label,
109
83
  candidType: "record",
110
84
  displayType: "object",
111
85
  fields,
112
- resolve(value) {
113
- const record = value;
114
- if (record == null) {
115
- return { field, value: null, raw: value };
86
+ resolve(data) {
87
+ if (data === null || data === undefined) {
88
+ throw new Error(`Expected record for field ${label}, but got ${data}`);
116
89
  }
90
+ const recordData = data;
117
91
  const resolvedFields = {};
118
- for (const f of fields) {
119
- resolvedFields[f.label] = f.resolve(record[f.label]);
92
+ for (const [key, field] of Object.entries(fields)) {
93
+ resolvedFields[key] = field.resolve(recordData[key]);
120
94
  }
121
- return { field, value: resolvedFields, raw: value };
95
+ return { ...node, fields: resolvedFields, raw: data };
122
96
  },
123
97
  };
124
- return field;
98
+ return node;
125
99
  }
126
100
  visitVariant(_t, fields_, label) {
127
- const options = [];
128
- const optionFields = [];
101
+ const selectedOption = {};
129
102
  for (const [key, type] of fields_) {
130
- options.push(key);
131
- optionFields.push(type.accept(this, key));
103
+ selectedOption[key] = type.accept(this, key);
132
104
  }
133
- // Detect if this is a Result type (has Ok and Err options)
134
- const isResult = options.includes("Ok") && options.includes("Err");
135
- const displayType = isResult ? "result" : "variant";
136
- const field = {
105
+ const isResult = "Ok" in selectedOption && "Err" in selectedOption;
106
+ const node = {
137
107
  type: "variant",
138
108
  label,
139
109
  candidType: "variant",
140
- displayType,
141
- options,
142
- optionFields,
143
- resolve(value) {
144
- if (value == null) {
145
- return { field, value: null, raw: value };
110
+ displayType: isResult ? "result" : "variant",
111
+ selectedOption: {}, // placeholder, populated on resolve
112
+ resolve(data) {
113
+ if (data === null || data === undefined) {
114
+ throw new Error(`Expected variant for field ${label}, but got ${data}`);
146
115
  }
147
- const variant = value;
148
- const optionsInValue = Object.keys(variant);
149
- const activeOption = optionsInValue.find((opt) => options.includes(opt));
150
- if (!activeOption) {
151
- return { field, value: null, raw: value };
116
+ const variantData = data;
117
+ const selected = Object.keys(variantData)[0];
118
+ const optionNode = selectedOption[selected];
119
+ if (!optionNode) {
120
+ throw new Error(`Option ${selected} not found in variant`);
152
121
  }
153
- const activeValue = variant[activeOption];
154
- const optionIndex = options.indexOf(activeOption);
155
- const optionField = optionFields[optionIndex];
156
- const specificField = {
157
- ...field,
158
- options,
159
- optionFields: [optionField],
160
- };
161
122
  return {
162
- field: specificField,
163
- value: {
164
- option: activeOption,
165
- value: optionField?.resolve(activeValue) ?? {
166
- field: optionField,
167
- value: activeValue,
168
- raw: activeValue,
169
- },
170
- },
171
- raw: value,
123
+ ...node,
124
+ selected,
125
+ selectedOption: optionNode.resolve(variantData[selected]),
126
+ raw: data,
172
127
  };
173
128
  },
174
129
  };
175
- return field;
130
+ return node;
176
131
  }
177
132
  visitTuple(_t, components, label) {
178
- const fields = components.map((type, index) => type.accept(this, `_${index}`));
179
- const field = {
133
+ const items = components.map((t, i) => t.accept(this, `_${i}`));
134
+ const node = {
180
135
  type: "tuple",
181
136
  label,
182
137
  candidType: "tuple",
183
138
  displayType: "array",
184
- fields,
185
- resolve(value) {
186
- const tuple = value;
187
- if (tuple == null) {
188
- return { field, value: null, raw: value };
139
+ items,
140
+ resolve(data) {
141
+ if (data === null || data === undefined) {
142
+ throw new Error(`Expected tuple for field ${label}, but got ${data}`);
189
143
  }
190
- const resolvedItems = fields.map((f, index) => f.resolve(tuple[index]));
191
- return { field, value: resolvedItems, raw: value };
144
+ const tupleData = data;
145
+ return {
146
+ ...node,
147
+ items: items.map((item, i) => item.resolve(tupleData[i])),
148
+ raw: data,
149
+ };
192
150
  },
193
151
  };
194
- return field;
152
+ return node;
195
153
  }
196
154
  visitOpt(_t, ty, label) {
197
- const innerField = ty.accept(this, label);
198
- const field = {
155
+ const inner = ty.accept(this, label);
156
+ const node = {
199
157
  type: "optional",
200
158
  label,
201
159
  candidType: "opt",
202
160
  displayType: "nullable",
203
- innerField,
204
- resolve(value) {
205
- const opt = value;
206
- if (opt == null || opt.length === 0) {
207
- return { field, value: null, raw: value };
208
- }
209
- return { field, value: innerField.resolve(opt[0]), raw: value };
161
+ value: null, // null until resolved
162
+ resolve(data) {
163
+ const opt = data;
164
+ const resolved = Array.isArray(opt) && opt.length > 0 ? inner.resolve(opt[0]) : null;
165
+ return { ...node, value: resolved, raw: data };
210
166
  },
211
167
  };
212
- return field;
168
+ return node;
213
169
  }
214
170
  visitVec(_t, ty, label) {
215
- // Check if it's blob (vec nat8)
171
+ // Blob detection (vec nat8)
216
172
  if (ty instanceof IDL.FixedNatClass && ty._bits === 8) {
217
- const codec = _t.accept(this.displayVisitor, null);
218
- const blobField = {
173
+ const codec = this.getCodec(_t);
174
+ const node = {
219
175
  type: "blob",
220
176
  label,
221
177
  candidType: "blob",
222
- displayType: "string", // Transformed to hex string
223
- displayHint: "hex",
224
- resolve(value) {
225
- return {
226
- field: blobField,
227
- value: codec.decode(value),
228
- raw: value,
229
- };
178
+ displayType: "string",
179
+ value: "", // empty schema placeholder, populated on resolve
180
+ resolve(data) {
181
+ return { ...node, value: codec.decode(data), raw: data };
230
182
  },
231
183
  };
232
- return blobField;
184
+ return node;
233
185
  }
234
- const itemField = ty.accept(this, "item");
235
- const field = {
186
+ const itemSchema = ty.accept(this, "item");
187
+ const node = {
236
188
  type: "vector",
237
189
  label,
238
190
  candidType: "vec",
239
191
  displayType: "array",
240
- itemField,
241
- resolve(value) {
242
- const vec = value;
243
- if (vec == null) {
244
- return { field, value: null, raw: value };
192
+ items: [], // empty schema placeholder, populated on resolve
193
+ resolve(data) {
194
+ if (data === null || data === undefined) {
195
+ throw new Error(`Expected vector for field ${label}, but got ${data}`);
245
196
  }
246
- const resolvedItems = vec.map((item) => itemField.resolve(item));
247
- return { field, value: resolvedItems, raw: value };
197
+ const vectorData = data;
198
+ return {
199
+ ...node,
200
+ items: vectorData.map((v) => itemSchema.resolve(v)),
201
+ raw: data,
202
+ };
248
203
  },
249
204
  };
250
- return field;
205
+ return node;
251
206
  }
252
- visitRec(t, ty, label) {
253
- // eslint-disable-next-line @typescript-eslint/no-this-alias
207
+ visitRec(_t, ty, label) {
254
208
  const self = this;
255
- const field = {
209
+ // Lazy extraction to prevent infinite loops
210
+ let innerSchema = null;
211
+ const getInner = () => (innerSchema ?? (innerSchema = ty.accept(self, label)));
212
+ const node = {
256
213
  type: "recursive",
257
214
  label,
258
215
  candidType: "rec",
259
216
  displayType: "recursive",
260
- typeName: t.name,
261
- // Lazy extraction to prevent infinite loops
262
- extract: () => ty.accept(self, label),
263
- resolve(value) {
264
- // Extract the inner field and resolve with it
265
- const innerField = field.extract();
266
- return innerField.resolve(value);
217
+ inner: {}, // placeholder, populated on resolve
218
+ resolve(data) {
219
+ return { ...node, inner: getInner().resolve(data), raw: data };
267
220
  },
268
221
  };
269
- return field;
222
+ return node;
270
223
  }
271
- // ════════════════════════════════════════════════════════════════════════
272
- // Primitive Types
273
- // ════════════════════════════════════════════════════════════════════════
224
+ // ══════════════════════════════════════════════════════════════════════════
225
+ // Primitives - Using Factory
226
+ // ══════════════════════════════════════════════════════════════════════════
274
227
  visitPrincipal(t, label) {
275
- const codec = t.accept(this.displayVisitor, null);
276
- const field = {
277
- type: "principal",
278
- label,
279
- candidType: "principal",
280
- displayType: "string", // Principal.toText()
281
- textFormat: checkTextFormat(label),
282
- resolve(value) {
283
- return {
284
- field,
285
- value: codec.decode(value),
286
- raw: value,
287
- };
288
- },
289
- };
290
- return field;
228
+ return primitiveNode("principal", label, "principal", "string", this.getCodec(t), {
229
+ format: checkTextFormat(label),
230
+ });
291
231
  }
292
232
  visitText(t, label) {
293
- const codec = t.accept(this.displayVisitor, null);
294
- const field = {
295
- type: "text",
296
- label,
297
- candidType: "text",
298
- displayType: "string",
299
- textFormat: checkTextFormat(label),
300
- resolve(value) {
301
- return { field, value: codec.decode(value), raw: value };
302
- },
303
- };
304
- return field;
233
+ return primitiveNode("text", label, "text", "string", this.getCodec(t), {
234
+ format: checkTextFormat(label),
235
+ });
305
236
  }
306
237
  visitBool(t, label) {
307
- const codec = t.accept(this.displayVisitor, null);
308
- const field = {
309
- type: "boolean",
310
- label,
311
- candidType: "bool",
312
- displayType: "boolean",
313
- resolve(value) {
314
- return { field, value: codec.decode(value), raw: value };
315
- },
316
- };
317
- return field;
238
+ return primitiveNode("boolean", label, "bool", "boolean", this.getCodec(t));
318
239
  }
319
240
  visitNull(t, label) {
320
- const codec = t.accept(this.displayVisitor, null);
321
- const field = {
322
- type: "null",
323
- label,
324
- candidType: "null",
325
- displayType: "null",
326
- resolve(value) {
327
- return { field, value: codec.decode(value), raw: value };
328
- },
329
- };
330
- return field;
241
+ return primitiveNode("null", label, "null", "null", this.getCodec(t));
331
242
  }
332
- // Numbers
333
243
  visitInt(t, label) {
334
- const codec = t.accept(this.displayVisitor, null);
335
- const field = {
336
- type: "number",
337
- label,
338
- candidType: "int",
339
- displayType: "string", // BigInt → string
340
- numberFormat: checkNumberFormat(label),
341
- resolve(value) {
342
- return { field, value: codec.decode(value), raw: value };
343
- },
344
- };
345
- return field;
244
+ return primitiveNode("number", label, "int", "string", this.getCodec(t), {
245
+ format: checkNumberFormat(label),
246
+ });
346
247
  }
347
248
  visitNat(t, label) {
348
- const codec = t.accept(this.displayVisitor, null);
349
- const field = {
350
- type: "number",
351
- label,
352
- candidType: "nat",
353
- displayType: "string", // BigInt → string
354
- numberFormat: checkNumberFormat(label),
355
- resolve(value) {
356
- return { field, value: codec.decode(value), raw: value };
357
- },
358
- };
359
- return field;
249
+ return primitiveNode("number", label, "nat", "string", this.getCodec(t), {
250
+ format: checkNumberFormat(label),
251
+ });
360
252
  }
361
253
  visitFloat(t, label) {
362
- const codec = t.accept(this.displayVisitor, null);
363
- const field = {
364
- type: "number",
365
- label,
366
- candidType: `float${t._bits}`,
367
- displayType: "number", // Floats stay as numbers
368
- numberFormat: checkNumberFormat(label),
369
- resolve(value) {
370
- return { field, value: codec.decode(value), raw: value };
371
- },
372
- };
373
- return field;
254
+ return primitiveNode("number", label, `float${t._bits}`, "number", this.getCodec(t), {
255
+ format: checkNumberFormat(label),
256
+ });
374
257
  }
375
258
  visitFixedInt(t, label) {
376
259
  const bits = t._bits;
377
- const codec = t.accept(this.displayVisitor, null);
378
- const field = {
379
- type: "number",
380
- label,
381
- candidType: `int${bits}`,
382
- displayType: bits <= 32 ? "number" : "string", // int64 → string
383
- numberFormat: checkNumberFormat(label),
384
- resolve(value) {
385
- return {
386
- field,
387
- value: codec.decode(value),
388
- raw: value,
389
- };
390
- },
391
- };
392
- return field;
260
+ return primitiveNode("number", label, `int${bits}`, bits <= 32 ? "number" : "string", this.getCodec(t), {
261
+ format: checkNumberFormat(label),
262
+ });
393
263
  }
394
264
  visitFixedNat(t, label) {
395
265
  const bits = t._bits;
396
- const codec = t.accept(this.displayVisitor, null);
397
- const field = {
398
- type: "number",
399
- label,
400
- candidType: `nat${bits}`,
401
- displayType: bits <= 32 ? "number" : "string", // nat64 → string
402
- numberFormat: checkNumberFormat(label),
403
- resolve(value) {
404
- return {
405
- field,
406
- value: codec.decode(value),
407
- raw: value,
408
- };
409
- },
410
- };
411
- return field;
266
+ return primitiveNode("number", label, `nat${bits}`, bits <= 32 ? "number" : "string", this.getCodec(t), {
267
+ format: checkNumberFormat(label),
268
+ });
412
269
  }
413
270
  visitType(_t, label) {
414
- const field = {
415
- type: "unknown",
416
- label,
417
- candidType: "unknown",
418
- displayType: "unknown",
419
- resolve(value) {
420
- return { field, value, raw: value };
421
- },
422
- };
423
- return field;
271
+ return primitiveNode("unknown", label, "unknown", "unknown", {
272
+ decode: (v) => v,
273
+ });
424
274
  }
425
275
  }
426
276
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/visitor/returns/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/visitor/returns/index.ts"],"names":[],"mappings":"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"}