@ic-reactor/candid 3.0.2-beta.0 → 3.0.2

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 +4 -13
  5. package/dist/display-reactor.d.ts.map +1 -1
  6. package/dist/display-reactor.js +22 -8
  7. package/dist/display-reactor.js.map +1 -1
  8. package/dist/index.d.ts +3 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -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 +780 -0
  33. package/dist/visitor/arguments/index.js.map +1 -0
  34. package/dist/visitor/arguments/types.d.ts +270 -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 +16 -7
  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 +981 -0
  74. package/src/visitor/arguments/schema.test.ts +324 -0
  75. package/src/visitor/arguments/types.ts +387 -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,460 @@
1
+ import { isQuery } from "../helpers";
2
+ import { checkTextFormat, checkNumberFormat } from "../constants";
3
+ import { formatLabel } from "../arguments/helpers";
4
+ import { MetadataError } from "../arguments/types";
5
+ import { sha256 } from "@noble/hashes/sha2.js";
6
+ import { IDL } from "@icp-sdk/core/candid";
7
+ import { DisplayCodecVisitor, uint8ArrayToHex } from "@ic-reactor/core";
8
+ export * from "./types";
9
+ /**
10
+ * Creates a primitive node with automatic resolve implementation.
11
+ */
12
+ function primitiveNode(type, label, candidType, displayType, codec, extras = {}) {
13
+ const node = {
14
+ type,
15
+ label,
16
+ displayLabel: formatLabel(label),
17
+ candidType,
18
+ displayType,
19
+ ...extras,
20
+ resolve(data) {
21
+ try {
22
+ return {
23
+ ...node,
24
+ value: codec.decode(data),
25
+ raw: data,
26
+ };
27
+ }
28
+ catch (e) {
29
+ throw new MetadataError(`Failed to decode: ${e instanceof Error ? e.message : String(e)}`, label, candidType);
30
+ }
31
+ },
32
+ };
33
+ return node;
34
+ }
35
+ // ════════════════════════════════════════════════════════════════════════════
36
+ // Simplified Result Field Visitor
37
+ // ════════════════════════════════════════════════════════════════════════════
38
+ export class ResultFieldVisitor extends IDL.Visitor {
39
+ constructor() {
40
+ super(...arguments);
41
+ Object.defineProperty(this, "codec", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: new DisplayCodecVisitor()
46
+ });
47
+ Object.defineProperty(this, "recCache", {
48
+ enumerable: true,
49
+ configurable: true,
50
+ writable: true,
51
+ value: new Map()
52
+ });
53
+ }
54
+ getCodec(t) {
55
+ const codec = t.accept(this.codec, null);
56
+ return {
57
+ decode: (v) => {
58
+ try {
59
+ return typeof codec?.decode === "function" ? codec.decode(v) : v;
60
+ }
61
+ catch {
62
+ return v;
63
+ }
64
+ },
65
+ };
66
+ }
67
+ // ══════════════════════════════════════════════════════════════════════════
68
+ // Service & Function
69
+ // ══════════════════════════════════════════════════════════════════════════
70
+ visitService(t) {
71
+ const result = {};
72
+ for (const [name, func] of t._fields) {
73
+ // Process each service method using dedicated method handler
74
+ result[name] = this.visitFuncAsMethod(func, name);
75
+ }
76
+ return result;
77
+ }
78
+ /**
79
+ * Handle func type when encountered as a service method definition.
80
+ * Returns MethodMeta with information about the method's inputs/outputs.
81
+ * This is public so callers can explicitly request method metadata.
82
+ */
83
+ visitFuncAsMethod(t, functionName) {
84
+ const functionType = isQuery(t) ? "query" : "update";
85
+ const returns = t.retTypes.map((ret, i) => ret.accept(this, `__ret${i}`));
86
+ return {
87
+ functionType,
88
+ functionName,
89
+ returns,
90
+ returnCount: t.retTypes.length,
91
+ resolve: (data) => {
92
+ const dataArray = returns.length <= 1 ? [data] : data;
93
+ return {
94
+ functionType,
95
+ functionName,
96
+ results: returns.map((node, i) => node.resolve(dataArray[i])),
97
+ raw: data,
98
+ };
99
+ },
100
+ };
101
+ }
102
+ /**
103
+ * Handle func type when encountered as a data field (e.g., callback in a record).
104
+ * Returns ResultNode that can resolve [Principal, string] data to a func reference.
105
+ */
106
+ visitFunc(_t, label) {
107
+ const node = {
108
+ type: "func",
109
+ label,
110
+ displayLabel: formatLabel(label),
111
+ candidType: "func",
112
+ displayType: "func",
113
+ canisterId: "", // placeholder, populated on resolve
114
+ methodName: "", // placeholder, populated on resolve
115
+ resolve(data) {
116
+ // Func values are represented as [Principal, string] tuples
117
+ if (!Array.isArray(data) || data.length !== 2) {
118
+ throw new MetadataError(`Expected func reference [Principal, string], but got ${typeof data}`, label, "func");
119
+ }
120
+ const [principal, methodName] = data;
121
+ const canisterId = typeof principal === "string"
122
+ ? principal
123
+ : (principal?.toText?.() ?? String(principal));
124
+ return {
125
+ ...node,
126
+ canisterId,
127
+ methodName: String(methodName),
128
+ raw: data,
129
+ };
130
+ },
131
+ };
132
+ return node;
133
+ }
134
+ // ══════════════════════════════════════════════════════════════════════════
135
+ // Compound Types
136
+ // ══════════════════════════════════════════════════════════════════════════
137
+ visitRecord(_t, fields_, label) {
138
+ const fields = {};
139
+ // Track func fields for funcRecord detection
140
+ const funcEntries = [];
141
+ for (const [key, type] of fields_) {
142
+ const fieldNode = type.accept(this, key);
143
+ fields[key] = fieldNode;
144
+ if (type instanceof IDL.FuncClass) {
145
+ funcEntries.push({
146
+ key,
147
+ funcType: type,
148
+ node: fieldNode,
149
+ });
150
+ }
151
+ }
152
+ // ── funcRecord: exactly one func field + other argument fields ──
153
+ if (funcEntries.length === 1) {
154
+ const { key: funcFieldKey, funcType, node: funcFieldNode, } = funcEntries[0];
155
+ const funcCallType = isQuery(funcType)
156
+ ? "query"
157
+ : "update";
158
+ const argFields = {};
159
+ for (const [k, v] of Object.entries(fields)) {
160
+ if (k !== funcFieldKey)
161
+ argFields[k] = v;
162
+ }
163
+ const node = {
164
+ type: "funcRecord",
165
+ label,
166
+ displayLabel: formatLabel(label),
167
+ candidType: "record",
168
+ displayType: "func-record",
169
+ canisterId: "",
170
+ methodName: "",
171
+ funcType: funcCallType,
172
+ funcClass: funcType,
173
+ funcFieldKey,
174
+ funcField: funcFieldNode,
175
+ argFields,
176
+ fields,
177
+ resolve(data) {
178
+ if (data === null || data === undefined) {
179
+ throw new MetadataError(`Expected funcRecord, but got ${data === null ? "null" : "undefined"}`, label, "record");
180
+ }
181
+ const recordData = data;
182
+ const resolvedFields = {};
183
+ let index = 0;
184
+ for (const [key, field] of Object.entries(fields)) {
185
+ const value = recordData[key] !== undefined
186
+ ? recordData[key]
187
+ : recordData[index];
188
+ resolvedFields[key] = field.resolve(value);
189
+ index++;
190
+ }
191
+ const resolvedFuncField = resolvedFields[funcFieldKey];
192
+ const resolvedArgFields = {};
193
+ for (const [k, v] of Object.entries(resolvedFields)) {
194
+ if (k !== funcFieldKey)
195
+ resolvedArgFields[k] = v;
196
+ }
197
+ // Build display-type default args ready for callMethod
198
+ const argRecord = Object.fromEntries(Object.entries(resolvedArgFields).map(([k, v]) => [
199
+ k,
200
+ v.value ?? v.raw,
201
+ ]));
202
+ const defaultArgs = funcType.argTypes.length > 0 ? [argRecord] : [];
203
+ return {
204
+ ...node,
205
+ canisterId: resolvedFuncField.canisterId,
206
+ methodName: resolvedFuncField.methodName,
207
+ funcField: resolvedFuncField,
208
+ argFields: resolvedArgFields,
209
+ fields: resolvedFields,
210
+ defaultArgs,
211
+ raw: data,
212
+ };
213
+ },
214
+ };
215
+ return node;
216
+ }
217
+ // ── Regular record ──
218
+ const node = {
219
+ type: "record",
220
+ label,
221
+ displayLabel: formatLabel(label),
222
+ candidType: "record",
223
+ displayType: "object",
224
+ fields,
225
+ resolve(data) {
226
+ if (data === null || data === undefined) {
227
+ throw new MetadataError(`Expected record, but got ${data === null ? "null" : "undefined"}`, label, "record");
228
+ }
229
+ const recordData = data;
230
+ const resolvedFields = {};
231
+ let index = 0;
232
+ for (const [key, field] of Object.entries(fields)) {
233
+ // Try named key first, then try numeric index (for tuples/indexed records)
234
+ const value = recordData[key] !== undefined ? recordData[key] : recordData[index];
235
+ if (!field || typeof field.resolve !== "function") {
236
+ throw new MetadataError(`Field "${key}" is not a valid ResultNode`, `${label}.${key}`, "record");
237
+ }
238
+ resolvedFields[key] = field.resolve(value);
239
+ index++;
240
+ }
241
+ return { ...node, fields: resolvedFields, raw: data };
242
+ },
243
+ };
244
+ return node;
245
+ }
246
+ visitVariant(_t, fields_, label) {
247
+ const options = {};
248
+ for (const [key, type] of fields_) {
249
+ options[key] = type.accept(this, key);
250
+ }
251
+ const isResult = ("Ok" in options && "Err" in options) ||
252
+ ("ok" in options && "err" in options);
253
+ const isNullVariant = !isResult &&
254
+ Object.values(options).every((option) => option.type === "null");
255
+ const node = {
256
+ type: "variant",
257
+ label,
258
+ displayLabel: formatLabel(label),
259
+ candidType: "variant",
260
+ displayType: isResult
261
+ ? "result"
262
+ : isNullVariant
263
+ ? "variant-null"
264
+ : "variant",
265
+ options,
266
+ selectedValue: {}, // placeholder, populated on resolve
267
+ resolve(data) {
268
+ if (data === null || data === undefined) {
269
+ throw new MetadataError(`Expected variant, but got ${data === null ? "null" : "undefined"}, raw: ${data}`, label, "variant");
270
+ }
271
+ const variantData = data;
272
+ // Support both raw { Selected: value } and transformed { _type: 'Selected', Selected: value }
273
+ const selected = variantData._type || Object.keys(variantData)[0];
274
+ const optionNode = options[selected];
275
+ if (!optionNode) {
276
+ throw new MetadataError(`Option "${selected}" not found. Available: ${Object.keys(options).join(", ")}`, label, "variant");
277
+ }
278
+ return {
279
+ ...node,
280
+ selected,
281
+ selectedValue: optionNode.resolve(variantData[selected]),
282
+ raw: data,
283
+ };
284
+ },
285
+ };
286
+ return node;
287
+ }
288
+ visitTuple(_t, components, label) {
289
+ const items = components.map((t, i) => t.accept(this, `_${i}`));
290
+ const node = {
291
+ type: "tuple",
292
+ label,
293
+ displayLabel: formatLabel(label),
294
+ candidType: "tuple",
295
+ displayType: "array",
296
+ items,
297
+ resolve(data) {
298
+ if (data === null || data === undefined || !Array.isArray(data)) {
299
+ throw new MetadataError(`Expected tuple, but got ${data === null ? "null" : typeof data}, raw: ${data}`, label, "tuple");
300
+ }
301
+ const tupleData = data;
302
+ return {
303
+ ...node,
304
+ items: items.map((item, i) => item.resolve(tupleData[i])),
305
+ raw: data,
306
+ };
307
+ },
308
+ };
309
+ return node;
310
+ }
311
+ visitOpt(_t, ty, label) {
312
+ const inner = ty.accept(this, label);
313
+ const node = {
314
+ type: "optional",
315
+ label,
316
+ displayLabel: formatLabel(label),
317
+ candidType: "opt",
318
+ displayType: "nullable",
319
+ value: null, // null until resolved
320
+ resolve(data) {
321
+ // If data is an array (raw format [T] or []), unwrap it.
322
+ // Otherwise, use data directly (already transformed or null/undefined).
323
+ const resolved = Array.isArray(data)
324
+ ? data.length > 0
325
+ ? inner.resolve(data[0])
326
+ : null
327
+ : data !== null && data !== undefined
328
+ ? inner.resolve(data)
329
+ : null;
330
+ return { ...node, value: resolved, raw: data };
331
+ },
332
+ };
333
+ return node;
334
+ }
335
+ visitVec(_t, ty, label) {
336
+ // Blob detection (vec nat8)
337
+ if (ty instanceof IDL.FixedNatClass && ty._bits === 8) {
338
+ const codec = this.getCodec(_t);
339
+ const node = {
340
+ type: "blob",
341
+ label,
342
+ displayLabel: formatLabel(label),
343
+ candidType: "blob",
344
+ displayType: "string",
345
+ length: 0,
346
+ hash: "",
347
+ value: "", // empty schema placeholder, populated on resolve
348
+ resolve(data) {
349
+ const value = codec.decode(data);
350
+ return {
351
+ ...node,
352
+ value,
353
+ displayType: typeof value === "string" ? "string" : "blob",
354
+ hash: uint8ArrayToHex(sha256(data instanceof Uint8Array
355
+ ? data
356
+ : new Uint8Array(data))),
357
+ length: value.length,
358
+ raw: data,
359
+ };
360
+ },
361
+ };
362
+ return node;
363
+ }
364
+ const itemSchema = ty.accept(this, "item");
365
+ const node = {
366
+ type: "vector",
367
+ label,
368
+ displayLabel: formatLabel(label),
369
+ candidType: "vec",
370
+ displayType: "array",
371
+ items: [], // empty schema placeholder, populated on resolve
372
+ resolve(data) {
373
+ if (data === null || data === undefined || !Array.isArray(data)) {
374
+ throw new MetadataError(`Expected vector, but got ${data === null ? "null" : typeof data}, raw: ${data}`, label, "vec");
375
+ }
376
+ const vectorData = data;
377
+ return {
378
+ ...node,
379
+ items: vectorData.map((v) => itemSchema.resolve(v)),
380
+ raw: data,
381
+ };
382
+ },
383
+ };
384
+ return node;
385
+ }
386
+ visitRec(t, ty, label) {
387
+ if (this.recCache.has(t)) {
388
+ return this.recCache.get(t);
389
+ }
390
+ const self = this;
391
+ // Lazy extraction to prevent infinite loops
392
+ let innerSchema = null;
393
+ const getInner = () => (innerSchema ?? (innerSchema = ty.accept(self, label)));
394
+ const node = {
395
+ type: "recursive",
396
+ label,
397
+ displayLabel: formatLabel(label),
398
+ candidType: "rec",
399
+ displayType: "recursive",
400
+ inner: {}, // placeholder, populated on resolve
401
+ resolve(data) {
402
+ return { ...node, inner: getInner().resolve(data), raw: data };
403
+ },
404
+ };
405
+ this.recCache.set(t, node);
406
+ return node;
407
+ }
408
+ // ══════════════════════════════════════════════════════════════════════════
409
+ // Primitives - Using Factory
410
+ // ══════════════════════════════════════════════════════════════════════════
411
+ visitPrincipal(t, label) {
412
+ return primitiveNode("principal", label, "principal", "string", this.getCodec(t), {
413
+ format: checkTextFormat(label),
414
+ });
415
+ }
416
+ visitText(t, label) {
417
+ return primitiveNode("text", label, "text", "string", this.getCodec(t), {
418
+ format: checkTextFormat(label),
419
+ });
420
+ }
421
+ visitBool(t, label) {
422
+ return primitiveNode("boolean", label, "bool", "boolean", this.getCodec(t));
423
+ }
424
+ visitNull(t, label) {
425
+ return primitiveNode("null", label, "null", "null", this.getCodec(t));
426
+ }
427
+ visitInt(t, label) {
428
+ return primitiveNode("number", label, "int", "string", this.getCodec(t), {
429
+ format: checkNumberFormat(label),
430
+ });
431
+ }
432
+ visitNat(t, label) {
433
+ return primitiveNode("number", label, "nat", "string", this.getCodec(t), {
434
+ format: checkNumberFormat(label),
435
+ });
436
+ }
437
+ visitFloat(t, label) {
438
+ return primitiveNode("number", label, `float${t._bits}`, "number", this.getCodec(t), {
439
+ format: checkNumberFormat(label),
440
+ });
441
+ }
442
+ visitFixedInt(t, label) {
443
+ const bits = t._bits;
444
+ return primitiveNode("number", label, `int${bits}`, bits <= 32 ? "number" : "string", this.getCodec(t), {
445
+ format: checkNumberFormat(label),
446
+ });
447
+ }
448
+ visitFixedNat(t, label) {
449
+ const bits = t._bits;
450
+ return primitiveNode("number", label, `nat${bits}`, bits <= 32 ? "number" : "string", this.getCodec(t), {
451
+ format: checkNumberFormat(label),
452
+ });
453
+ }
454
+ visitType(_t, label) {
455
+ return primitiveNode("unknown", label, "unknown", "unknown", {
456
+ decode: (v) => v,
457
+ });
458
+ }
459
+ }
460
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/visitor/returns/index.ts"],"names":[],"mappings":"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"}