@ic-reactor/candid 3.0.11-beta.0 → 3.0.11-beta.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.
- package/dist/visitor/returns/index.d.ts +2 -1
- package/dist/visitor/returns/index.d.ts.map +1 -1
- package/dist/visitor/returns/index.js +67 -14
- package/dist/visitor/returns/index.js.map +1 -1
- package/dist/visitor/returns/types.d.ts +6 -3
- package/dist/visitor/returns/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/visitor/returns/index.test.ts +179 -1
- package/src/visitor/returns/index.ts +79 -15
- package/src/visitor/returns/types.ts +4 -2
|
@@ -5,6 +5,7 @@ import type { BaseActor, FunctionName } from "@ic-reactor/core";
|
|
|
5
5
|
export * from "./types";
|
|
6
6
|
export declare class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<string, ResultNode | MethodMeta<A> | ServiceMeta<A>> {
|
|
7
7
|
private codec;
|
|
8
|
+
private recCache;
|
|
8
9
|
private getCodec;
|
|
9
10
|
visitService(t: IDL.ServiceClass): ServiceMeta<A>;
|
|
10
11
|
visitFunc(t: IDL.FuncClass, functionName: FunctionName<A>): MethodMeta<A>;
|
|
@@ -13,7 +14,7 @@ export declare class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<strin
|
|
|
13
14
|
visitTuple<T extends IDL.Type[]>(_t: IDL.TupleClass<T>, components: IDL.Type[], label: string): ResultNode<"tuple">;
|
|
14
15
|
visitOpt<T>(_t: IDL.OptClass<T>, ty: IDL.Type<T>, label: string): ResultNode<"optional">;
|
|
15
16
|
visitVec<T>(_t: IDL.VecClass<T>, ty: IDL.Type<T>, label: string): ResultNode<"vector"> | ResultNode<"blob">;
|
|
16
|
-
visitRec<T>(
|
|
17
|
+
visitRec<T>(t: IDL.RecClass<T>, ty: IDL.ConstructType<T>, label: string): ResultNode<"recursive">;
|
|
17
18
|
visitPrincipal(t: IDL.PrincipalClass, label: string): ResultNode<"principal">;
|
|
18
19
|
visitText(t: IDL.TextClass, label: string): ResultNode<"text">;
|
|
19
20
|
visitBool(t: IDL.BoolClass, label: string): ResultNode<"boolean">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitor/returns/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,EACV,UAAU,EAGV,UAAU,EACV,WAAW,EAIZ,MAAM,SAAS,CAAA;AAEhB,cAAc,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visitor/returns/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ import { isQuery } from "../helpers";
|
|
|
2
2
|
import { checkTextFormat, checkNumberFormat } from "../constants";
|
|
3
3
|
import { IDL } from "../types";
|
|
4
4
|
export * from "./types";
|
|
5
|
-
import {
|
|
5
|
+
import { sha256 } from "@noble/hashes/sha2";
|
|
6
|
+
import { DisplayCodecVisitor, uint8ArrayToHex } from "@ic-reactor/core";
|
|
6
7
|
export * from "./types";
|
|
7
8
|
/**
|
|
8
9
|
* Creates a primitive node with automatic resolve implementation.
|
|
@@ -15,11 +16,16 @@ function primitiveNode(type, label, candidType, displayType, codec, extras = {})
|
|
|
15
16
|
displayType,
|
|
16
17
|
...extras,
|
|
17
18
|
resolve(data) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
try {
|
|
20
|
+
return {
|
|
21
|
+
...node,
|
|
22
|
+
value: codec.decode(data),
|
|
23
|
+
raw: data,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
throw new Error(`Failed to decode field "${label}" of type ${type} (${candidType}) with data: ${JSON.stringify(data)}. Error: ${e}`);
|
|
28
|
+
}
|
|
23
29
|
},
|
|
24
30
|
};
|
|
25
31
|
return node;
|
|
@@ -36,9 +42,25 @@ export class ResultFieldVisitor extends IDL.Visitor {
|
|
|
36
42
|
writable: true,
|
|
37
43
|
value: new DisplayCodecVisitor()
|
|
38
44
|
});
|
|
45
|
+
Object.defineProperty(this, "recCache", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
configurable: true,
|
|
48
|
+
writable: true,
|
|
49
|
+
value: new Map()
|
|
50
|
+
});
|
|
39
51
|
}
|
|
40
52
|
getCodec(t) {
|
|
41
|
-
|
|
53
|
+
const codec = t.accept(this.codec, null);
|
|
54
|
+
return {
|
|
55
|
+
decode: (v) => {
|
|
56
|
+
try {
|
|
57
|
+
return typeof codec?.decode === "function" ? codec.decode(v) : v;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return v;
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
};
|
|
42
64
|
}
|
|
43
65
|
// ══════════════════════════════════════════════════════════════════════════
|
|
44
66
|
// Service & Function
|
|
@@ -89,8 +111,15 @@ export class ResultFieldVisitor extends IDL.Visitor {
|
|
|
89
111
|
}
|
|
90
112
|
const recordData = data;
|
|
91
113
|
const resolvedFields = {};
|
|
114
|
+
let index = 0;
|
|
92
115
|
for (const [key, field] of Object.entries(fields)) {
|
|
93
|
-
|
|
116
|
+
// Try named key first, then try numeric index (for tuples/indexed records)
|
|
117
|
+
const value = recordData[key] !== undefined ? recordData[key] : recordData[index];
|
|
118
|
+
if (!field || typeof field.resolve !== "function") {
|
|
119
|
+
throw new Error(`Field "${key}" in record "${label}" is not a valid ResultNode. Got: ${JSON.stringify(field)}`);
|
|
120
|
+
}
|
|
121
|
+
resolvedFields[key] = field.resolve(value);
|
|
122
|
+
index++;
|
|
94
123
|
}
|
|
95
124
|
return { ...node, fields: resolvedFields, raw: data };
|
|
96
125
|
},
|
|
@@ -114,10 +143,11 @@ export class ResultFieldVisitor extends IDL.Visitor {
|
|
|
114
143
|
throw new Error(`Expected variant for field ${label}, but got ${data}`);
|
|
115
144
|
}
|
|
116
145
|
const variantData = data;
|
|
117
|
-
|
|
146
|
+
// Support both raw { Selected: value } and transformed { _type: 'Selected', Selected: value }
|
|
147
|
+
const selected = variantData._type || Object.keys(variantData)[0];
|
|
118
148
|
const optionNode = selectedOption[selected];
|
|
119
149
|
if (!optionNode) {
|
|
120
|
-
throw new Error(`Option ${selected} not found in variant`);
|
|
150
|
+
throw new Error(`Option ${selected} not found in variant ${label}. Available options: ${Object.keys(selectedOption).join(", ")}`);
|
|
121
151
|
}
|
|
122
152
|
return {
|
|
123
153
|
...node,
|
|
@@ -160,8 +190,15 @@ export class ResultFieldVisitor extends IDL.Visitor {
|
|
|
160
190
|
displayType: "nullable",
|
|
161
191
|
value: null, // null until resolved
|
|
162
192
|
resolve(data) {
|
|
163
|
-
|
|
164
|
-
|
|
193
|
+
// If data is an array (raw format [T] or []), unwrap it.
|
|
194
|
+
// Otherwise, use data directly (already transformed or null/undefined).
|
|
195
|
+
const resolved = Array.isArray(data)
|
|
196
|
+
? data.length > 0
|
|
197
|
+
? inner.resolve(data[0])
|
|
198
|
+
: null
|
|
199
|
+
: data !== null && data !== undefined
|
|
200
|
+
? inner.resolve(data)
|
|
201
|
+
: null;
|
|
165
202
|
return { ...node, value: resolved, raw: data };
|
|
166
203
|
},
|
|
167
204
|
};
|
|
@@ -176,9 +213,21 @@ export class ResultFieldVisitor extends IDL.Visitor {
|
|
|
176
213
|
label,
|
|
177
214
|
candidType: "blob",
|
|
178
215
|
displayType: "string",
|
|
216
|
+
length: 0,
|
|
217
|
+
hash: "",
|
|
179
218
|
value: "", // empty schema placeholder, populated on resolve
|
|
180
219
|
resolve(data) {
|
|
181
|
-
|
|
220
|
+
const value = codec.decode(data);
|
|
221
|
+
return {
|
|
222
|
+
...node,
|
|
223
|
+
value,
|
|
224
|
+
displayType: typeof value === "string" ? "string" : "blob",
|
|
225
|
+
hash: uint8ArrayToHex(sha256(data instanceof Uint8Array
|
|
226
|
+
? data
|
|
227
|
+
: new Uint8Array(data))),
|
|
228
|
+
length: value.length,
|
|
229
|
+
raw: data,
|
|
230
|
+
};
|
|
182
231
|
},
|
|
183
232
|
};
|
|
184
233
|
return node;
|
|
@@ -204,7 +253,10 @@ export class ResultFieldVisitor extends IDL.Visitor {
|
|
|
204
253
|
};
|
|
205
254
|
return node;
|
|
206
255
|
}
|
|
207
|
-
visitRec(
|
|
256
|
+
visitRec(t, ty, label) {
|
|
257
|
+
if (this.recCache.has(t)) {
|
|
258
|
+
return this.recCache.get(t);
|
|
259
|
+
}
|
|
208
260
|
const self = this;
|
|
209
261
|
// Lazy extraction to prevent infinite loops
|
|
210
262
|
let innerSchema = null;
|
|
@@ -219,6 +271,7 @@ export class ResultFieldVisitor extends IDL.Visitor {
|
|
|
219
271
|
return { ...node, inner: getInner().resolve(data), raw: data };
|
|
220
272
|
},
|
|
221
273
|
};
|
|
274
|
+
this.recCache.set(t, node);
|
|
222
275
|
return node;
|
|
223
276
|
}
|
|
224
277
|
// ══════════════════════════════════════════════════════════════════════════
|
|
@@ -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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BaseActor, FunctionName, FunctionType, ActorMethodReturnType } from "@ic-reactor/core";
|
|
2
2
|
export type NodeType = "record" | "variant" | "tuple" | "optional" | "vector" | "blob" | "recursive" | "principal" | "number" | "text" | "boolean" | "null" | "unknown";
|
|
3
|
-
export type DisplayType = "string" | "number" | "boolean" | "null" | "object" | "array" | "variant" | "result" | "nullable" | "recursive" | "unknown";
|
|
3
|
+
export type DisplayType = "string" | "number" | "boolean" | "null" | "object" | "array" | "variant" | "result" | "nullable" | "recursive" | "blob" | "unknown";
|
|
4
4
|
export type NumberFormat = "timestamp" | "cycle" | "value" | "token" | "normal";
|
|
5
5
|
export type TextFormat = "plain" | "timestamp" | "uuid" | "url" | "email" | "phone" | "btc" | "eth" | "account-id" | "principal";
|
|
6
6
|
/**
|
|
@@ -17,6 +17,8 @@ interface ResultNodeBase<T extends NodeType = NodeType> {
|
|
|
17
17
|
displayType: DisplayType;
|
|
18
18
|
/** Original raw value before transformation (present after resolution) */
|
|
19
19
|
raw?: unknown;
|
|
20
|
+
/** Value after display transformation (present after resolution) */
|
|
21
|
+
value?: unknown;
|
|
20
22
|
}
|
|
21
23
|
type NodeTypeExtras<T extends NodeType> = T extends "record" ? {
|
|
22
24
|
fields: Record<string, ResultNode>;
|
|
@@ -30,7 +32,9 @@ type NodeTypeExtras<T extends NodeType> = T extends "record" ? {
|
|
|
30
32
|
} : T extends "recursive" ? {
|
|
31
33
|
inner: ResultNode;
|
|
32
34
|
} : T extends "blob" ? {
|
|
33
|
-
value: string;
|
|
35
|
+
value: string | Uint8Array;
|
|
36
|
+
hash: string;
|
|
37
|
+
length: number;
|
|
34
38
|
} : T extends "number" ? {
|
|
35
39
|
format: NumberFormat;
|
|
36
40
|
value: string | number;
|
|
@@ -56,7 +60,6 @@ type NodeTypeExtras<T extends NodeType> = T extends "record" ? {
|
|
|
56
60
|
export type ResultNode<T extends NodeType = NodeType> = ResultNodeBase<T> & NodeTypeExtras<T> & {
|
|
57
61
|
/** Resolve this node with a value, returning a new resolved node */
|
|
58
62
|
resolve(data: unknown): ResolvedNode<T>;
|
|
59
|
-
value?: unknown;
|
|
60
63
|
};
|
|
61
64
|
/**
|
|
62
65
|
* A resolved node has `raw` populated and children resolved.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/visitor/returns/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AAMzB,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,SAAS,GACT,OAAO,GACP,UAAU,GACV,QAAQ,GACR,MAAM,GACN,WAAW,GACX,WAAW,GACX,QAAQ,GACR,MAAM,GACN,SAAS,GACT,MAAM,GACN,SAAS,CAAA;AAEb,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,CAAA;AAEb,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;AAC/E,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,WAAW,GACX,MAAM,GACN,KAAK,GACL,OAAO,GACP,OAAO,GACP,KAAK,GACL,KAAK,GACL,YAAY,GACZ,WAAW,CAAA;AAMf;;GAEG;AACH,UAAU,cAAc,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACpD,+BAA+B;IAC/B,IAAI,EAAE,CAAC,CAAA;IACP,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,WAAW,EAAE,WAAW,CAAA;IACxB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/visitor/returns/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ic-reactor/candid",
|
|
3
|
-
"version": "3.0.11-beta.
|
|
3
|
+
"version": "3.0.11-beta.2",
|
|
4
4
|
"description": "IC Reactor Candid Adapter - Fetch and parse Candid definitions from Internet Computer canisters",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"license": "MIT",
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@noble/hashes": "^1.8.0",
|
|
46
|
-
"@ic-reactor/core": "^3.0.11-beta.
|
|
46
|
+
"@ic-reactor/core": "^3.0.11-beta.2"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"@icp-sdk/core": "^5.0.0"
|
|
@@ -622,8 +622,24 @@ describe("ResultFieldVisitor", () => {
|
|
|
622
622
|
// Validate by resolving a Uint8Array
|
|
623
623
|
const blobResolved = field.resolve(
|
|
624
624
|
new Uint8Array([0x12, 0x34, 0xab, 0xcd])
|
|
625
|
-
)
|
|
625
|
+
) as ResolvedNode<"blob">
|
|
626
626
|
expect(blobResolved.value).toBe("1234abcd")
|
|
627
|
+
expect(blobResolved.hash).toBeDefined()
|
|
628
|
+
expect(blobResolved.hash).toHaveLength(64)
|
|
629
|
+
})
|
|
630
|
+
|
|
631
|
+
it("should handle large blob (> 512 bytes)", () => {
|
|
632
|
+
const blobType = IDL.Vec(IDL.Nat8)
|
|
633
|
+
const field = visitor.visitVec(blobType, IDL.Nat8, "large_data")
|
|
634
|
+
|
|
635
|
+
expect(field.type).toBe("blob")
|
|
636
|
+
// Create a large Uint8Array
|
|
637
|
+
const largeData = new Uint8Array(513).fill(0xaa)
|
|
638
|
+
const blobResolved = field.resolve(largeData) as ResolvedNode<"blob">
|
|
639
|
+
|
|
640
|
+
expect(blobResolved.value).toBeInstanceOf(Uint8Array)
|
|
641
|
+
expect(blobResolved.displayType).toBe("blob")
|
|
642
|
+
expect(blobResolved.value).toHaveLength(513)
|
|
627
643
|
})
|
|
628
644
|
|
|
629
645
|
it("should handle nested vectors", () => {
|
|
@@ -1958,3 +1974,165 @@ describe("ResultFieldVisitor", () => {
|
|
|
1958
1974
|
})
|
|
1959
1975
|
})
|
|
1960
1976
|
})
|
|
1977
|
+
|
|
1978
|
+
describe("ResultFieldVisitor Reproduction - User reported issue", () => {
|
|
1979
|
+
const visitor = new ResultFieldVisitor()
|
|
1980
|
+
|
|
1981
|
+
it("should handle record data provided as an array (tuple-like) even if IDL has names", () => {
|
|
1982
|
+
const Rule = IDL.Variant({
|
|
1983
|
+
Quorum: IDL.Record({
|
|
1984
|
+
min_approved: IDL.Nat,
|
|
1985
|
+
approvers: IDL.Variant({ Group: IDL.Vec(IDL.Principal) }),
|
|
1986
|
+
}),
|
|
1987
|
+
})
|
|
1988
|
+
|
|
1989
|
+
const NamedRule = IDL.Record({
|
|
1990
|
+
description: IDL.Opt(IDL.Text),
|
|
1991
|
+
id: IDL.Text,
|
|
1992
|
+
name: IDL.Text,
|
|
1993
|
+
rule: Rule,
|
|
1994
|
+
})
|
|
1995
|
+
|
|
1996
|
+
const field = visitor.visitRecord(
|
|
1997
|
+
NamedRule,
|
|
1998
|
+
[
|
|
1999
|
+
["description", IDL.Opt(IDL.Text)],
|
|
2000
|
+
["id", IDL.Text],
|
|
2001
|
+
["name", IDL.Text],
|
|
2002
|
+
["rule", Rule],
|
|
2003
|
+
],
|
|
2004
|
+
"NamedRule"
|
|
2005
|
+
)
|
|
2006
|
+
|
|
2007
|
+
// Simulate lib-agent returning an array for a named record
|
|
2008
|
+
const arrayData = [
|
|
2009
|
+
[], // description (empty opt)
|
|
2010
|
+
"1253ec41-ef1d-4317-bb82-2366fc34f37c", // id
|
|
2011
|
+
"Admin approval", // name
|
|
2012
|
+
{ Quorum: { min_approved: BigInt(1), approvers: { Group: [] } } }, // rule
|
|
2013
|
+
]
|
|
2014
|
+
|
|
2015
|
+
// Before the fix, this would throw because arrayData["rule"] is undefined
|
|
2016
|
+
const resolved = field.resolve(arrayData)
|
|
2017
|
+
|
|
2018
|
+
expect(resolved.fields.id.value).toBe(
|
|
2019
|
+
"1253ec41-ef1d-4317-bb82-2366fc34f37c"
|
|
2020
|
+
)
|
|
2021
|
+
expect(resolved.fields.name.value).toBe("Admin approval")
|
|
2022
|
+
|
|
2023
|
+
const ruleNode = resolved.fields.rule as VariantNode
|
|
2024
|
+
expect(ruleNode.selected).toBe("Quorum")
|
|
2025
|
+
})
|
|
2026
|
+
|
|
2027
|
+
it("should handle already transformed variant data with _type", () => {
|
|
2028
|
+
const Rule = IDL.Variant({
|
|
2029
|
+
Quorum: IDL.Text,
|
|
2030
|
+
})
|
|
2031
|
+
|
|
2032
|
+
const field = visitor.visitVariant(Rule, [["Quorum", IDL.Text]], "Rule")
|
|
2033
|
+
|
|
2034
|
+
// Data transformed by DisplayCodecVisitor
|
|
2035
|
+
const transformedData = {
|
|
2036
|
+
_type: "Quorum",
|
|
2037
|
+
Quorum: "some text",
|
|
2038
|
+
}
|
|
2039
|
+
|
|
2040
|
+
// Before the fix, this would throw because transformedData["Quorum"] is there but
|
|
2041
|
+
// Object.keys(transformedData)[0] is "_type"
|
|
2042
|
+
const resolved = field.resolve(transformedData)
|
|
2043
|
+
|
|
2044
|
+
expect(resolved.selected).toBe("Quorum")
|
|
2045
|
+
expect(resolved.selectedOption.value).toBe("some text")
|
|
2046
|
+
})
|
|
2047
|
+
|
|
2048
|
+
it("should handle already transformed optional data (unwrapped)", () => {
|
|
2049
|
+
const OptText = IDL.Opt(IDL.Text)
|
|
2050
|
+
const field = visitor.visitOpt(OptText, IDL.Text, "maybeText")
|
|
2051
|
+
|
|
2052
|
+
// Raw format is [value]
|
|
2053
|
+
expect(field.resolve(["hello"]).value?.value).toBe("hello")
|
|
2054
|
+
expect(field.resolve([]).value).toBeNull()
|
|
2055
|
+
|
|
2056
|
+
// Transformed format is just the value
|
|
2057
|
+
expect(field.resolve("hello").value?.value).toBe("hello")
|
|
2058
|
+
expect(field.resolve(null).value).toBeNull()
|
|
2059
|
+
expect(field.resolve(undefined).value).toBeNull()
|
|
2060
|
+
})
|
|
2061
|
+
|
|
2062
|
+
it("should provide a better error message when an option is missing", () => {
|
|
2063
|
+
const MyVariant = IDL.Variant({ A: IDL.Null, B: IDL.Null })
|
|
2064
|
+
const field = visitor.visitVariant(
|
|
2065
|
+
MyVariant,
|
|
2066
|
+
[
|
|
2067
|
+
["A", IDL.Null],
|
|
2068
|
+
["B", IDL.Null],
|
|
2069
|
+
],
|
|
2070
|
+
"MyVariant"
|
|
2071
|
+
)
|
|
2072
|
+
|
|
2073
|
+
expect(() => field.resolve({ C: null })).toThrow(
|
|
2074
|
+
/Option C not found in variant MyVariant. Available options: A, B/
|
|
2075
|
+
)
|
|
2076
|
+
})
|
|
2077
|
+
|
|
2078
|
+
describe("Recursive types", () => {
|
|
2079
|
+
it("should handle recursive variant with transformed data", () => {
|
|
2080
|
+
const Rule = IDL.Rec()
|
|
2081
|
+
const RuleType = IDL.Variant({
|
|
2082
|
+
Quorum: IDL.Record({
|
|
2083
|
+
min_approved: IDL.Nat,
|
|
2084
|
+
}),
|
|
2085
|
+
Nested: Rule,
|
|
2086
|
+
})
|
|
2087
|
+
Rule.fill(RuleType)
|
|
2088
|
+
|
|
2089
|
+
const field = visitor.visitRec(Rule, RuleType, "rule")
|
|
2090
|
+
|
|
2091
|
+
// Transformed data (using _type)
|
|
2092
|
+
const transformedData = {
|
|
2093
|
+
_type: "Quorum",
|
|
2094
|
+
Quorum: {
|
|
2095
|
+
min_approved: "1",
|
|
2096
|
+
},
|
|
2097
|
+
}
|
|
2098
|
+
|
|
2099
|
+
// This should work because Rule.resolve calls Variant.resolve
|
|
2100
|
+
const resolved = field.resolve(transformedData) as RecursiveNode
|
|
2101
|
+
const variantNode = resolved.inner as VariantNode
|
|
2102
|
+
|
|
2103
|
+
expect(variantNode.selected).toBe("Quorum")
|
|
2104
|
+
expect(variantNode.selectedOption.type).toBe("record")
|
|
2105
|
+
})
|
|
2106
|
+
|
|
2107
|
+
it("should handle deeply nested recursive variant with transformed data", () => {
|
|
2108
|
+
const Rule = IDL.Rec()
|
|
2109
|
+
const RuleType = IDL.Variant({
|
|
2110
|
+
Quorum: IDL.Record({
|
|
2111
|
+
min_approved: IDL.Nat,
|
|
2112
|
+
}),
|
|
2113
|
+
Nested: Rule,
|
|
2114
|
+
})
|
|
2115
|
+
Rule.fill(RuleType)
|
|
2116
|
+
|
|
2117
|
+
const field = visitor.visitRec(Rule, RuleType, "rule")
|
|
2118
|
+
|
|
2119
|
+
const transformedData = {
|
|
2120
|
+
_type: "Nested",
|
|
2121
|
+
Nested: {
|
|
2122
|
+
_type: "Quorum",
|
|
2123
|
+
Quorum: {
|
|
2124
|
+
min_approved: "2",
|
|
2125
|
+
},
|
|
2126
|
+
},
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
const resolved = field.resolve(transformedData) as RecursiveNode
|
|
2130
|
+
const variantNode = resolved.inner as VariantNode
|
|
2131
|
+
expect(variantNode.selected).toBe("Nested")
|
|
2132
|
+
|
|
2133
|
+
const nestedResolved = variantNode.selectedOption as RecursiveNode
|
|
2134
|
+
const innerVariant = nestedResolved.inner as VariantNode
|
|
2135
|
+
expect(innerVariant.selected).toBe("Quorum")
|
|
2136
|
+
})
|
|
2137
|
+
})
|
|
2138
|
+
})
|
|
@@ -13,7 +13,8 @@ import type {
|
|
|
13
13
|
} from "./types"
|
|
14
14
|
|
|
15
15
|
export * from "./types"
|
|
16
|
-
import {
|
|
16
|
+
import { sha256 } from "@noble/hashes/sha2"
|
|
17
|
+
import { DisplayCodecVisitor, uint8ArrayToHex } from "@ic-reactor/core"
|
|
17
18
|
import type {
|
|
18
19
|
ActorMethodReturnType,
|
|
19
20
|
BaseActor,
|
|
@@ -47,11 +48,17 @@ function primitiveNode<T extends NodeType>(
|
|
|
47
48
|
displayType,
|
|
48
49
|
...extras,
|
|
49
50
|
resolve(data: unknown): ResolvedNode<T> {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
try {
|
|
52
|
+
return {
|
|
53
|
+
...node,
|
|
54
|
+
value: codec.decode(data),
|
|
55
|
+
raw: data,
|
|
56
|
+
} as unknown as ResolvedNode<T>
|
|
57
|
+
} catch (e) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
`Failed to decode field "${label}" of type ${type} (${candidType}) with data: ${JSON.stringify(data)}. Error: ${e}`
|
|
60
|
+
)
|
|
61
|
+
}
|
|
55
62
|
},
|
|
56
63
|
} as unknown as ResultNode<T>
|
|
57
64
|
return node
|
|
@@ -67,8 +74,19 @@ export class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<
|
|
|
67
74
|
> {
|
|
68
75
|
private codec = new DisplayCodecVisitor()
|
|
69
76
|
|
|
77
|
+
private recCache = new Map<IDL.RecClass<any>, ResultNode<"recursive">>()
|
|
78
|
+
|
|
70
79
|
private getCodec(t: IDL.Type): Codec {
|
|
71
|
-
|
|
80
|
+
const codec = t.accept(this.codec, null) as any
|
|
81
|
+
return {
|
|
82
|
+
decode: (v: unknown) => {
|
|
83
|
+
try {
|
|
84
|
+
return typeof codec?.decode === "function" ? codec.decode(v) : v
|
|
85
|
+
} catch {
|
|
86
|
+
return v
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
}
|
|
72
90
|
}
|
|
73
91
|
|
|
74
92
|
// ══════════════════════════════════════════════════════════════════════════
|
|
@@ -137,8 +155,20 @@ export class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<
|
|
|
137
155
|
}
|
|
138
156
|
const recordData = data as Record<string, unknown>
|
|
139
157
|
const resolvedFields: Record<string, ResolvedNode> = {}
|
|
158
|
+
let index = 0
|
|
140
159
|
for (const [key, field] of Object.entries(fields)) {
|
|
141
|
-
|
|
160
|
+
// Try named key first, then try numeric index (for tuples/indexed records)
|
|
161
|
+
const value =
|
|
162
|
+
recordData[key] !== undefined ? recordData[key] : recordData[index]
|
|
163
|
+
|
|
164
|
+
if (!field || typeof field.resolve !== "function") {
|
|
165
|
+
throw new Error(
|
|
166
|
+
`Field "${key}" in record "${label}" is not a valid ResultNode. Got: ${JSON.stringify(field)}`
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
resolvedFields[key] = field.resolve(value)
|
|
171
|
+
index++
|
|
142
172
|
}
|
|
143
173
|
return { ...node, fields: resolvedFields, raw: data }
|
|
144
174
|
},
|
|
@@ -169,10 +199,15 @@ export class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<
|
|
|
169
199
|
)
|
|
170
200
|
}
|
|
171
201
|
const variantData = data as Record<string, unknown>
|
|
172
|
-
|
|
202
|
+
// Support both raw { Selected: value } and transformed { _type: 'Selected', Selected: value }
|
|
203
|
+
const selected =
|
|
204
|
+
(variantData._type as string) || Object.keys(variantData)[0]
|
|
173
205
|
const optionNode = selectedOption[selected]
|
|
206
|
+
|
|
174
207
|
if (!optionNode) {
|
|
175
|
-
throw new Error(
|
|
208
|
+
throw new Error(
|
|
209
|
+
`Option ${selected} not found in variant ${label}. Available options: ${Object.keys(selectedOption).join(", ")}`
|
|
210
|
+
)
|
|
176
211
|
}
|
|
177
212
|
return {
|
|
178
213
|
...node,
|
|
@@ -229,9 +264,16 @@ export class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<
|
|
|
229
264
|
displayType: "nullable",
|
|
230
265
|
value: null, // null until resolved
|
|
231
266
|
resolve(data: unknown): ResolvedNode<"optional"> {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
267
|
+
// If data is an array (raw format [T] or []), unwrap it.
|
|
268
|
+
// Otherwise, use data directly (already transformed or null/undefined).
|
|
269
|
+
const resolved = Array.isArray(data)
|
|
270
|
+
? data.length > 0
|
|
271
|
+
? inner.resolve(data[0])
|
|
272
|
+
: null
|
|
273
|
+
: data !== null && data !== undefined
|
|
274
|
+
? inner.resolve(data)
|
|
275
|
+
: null
|
|
276
|
+
|
|
235
277
|
return { ...node, value: resolved, raw: data }
|
|
236
278
|
},
|
|
237
279
|
}
|
|
@@ -251,9 +293,25 @@ export class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<
|
|
|
251
293
|
label,
|
|
252
294
|
candidType: "blob",
|
|
253
295
|
displayType: "string",
|
|
296
|
+
length: 0,
|
|
297
|
+
hash: "",
|
|
254
298
|
value: "", // empty schema placeholder, populated on resolve
|
|
255
299
|
resolve(data: unknown): ResolvedNode<"blob"> {
|
|
256
|
-
|
|
300
|
+
const value = codec.decode(data) as string | Uint8Array
|
|
301
|
+
return {
|
|
302
|
+
...node,
|
|
303
|
+
value,
|
|
304
|
+
displayType: typeof value === "string" ? "string" : "blob",
|
|
305
|
+
hash: uint8ArrayToHex(
|
|
306
|
+
sha256(
|
|
307
|
+
data instanceof Uint8Array
|
|
308
|
+
? data
|
|
309
|
+
: new Uint8Array(data as number[])
|
|
310
|
+
)
|
|
311
|
+
),
|
|
312
|
+
length: value.length,
|
|
313
|
+
raw: data,
|
|
314
|
+
}
|
|
257
315
|
},
|
|
258
316
|
}
|
|
259
317
|
return node
|
|
@@ -283,10 +341,14 @@ export class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<
|
|
|
283
341
|
}
|
|
284
342
|
|
|
285
343
|
public visitRec<T>(
|
|
286
|
-
|
|
344
|
+
t: IDL.RecClass<T>,
|
|
287
345
|
ty: IDL.ConstructType<T>,
|
|
288
346
|
label: string
|
|
289
347
|
): ResultNode<"recursive"> {
|
|
348
|
+
if (this.recCache.has(t)) {
|
|
349
|
+
return this.recCache.get(t)! as ResultNode<"recursive">
|
|
350
|
+
}
|
|
351
|
+
|
|
290
352
|
const self = this
|
|
291
353
|
// Lazy extraction to prevent infinite loops
|
|
292
354
|
let innerSchema: ResultNode | null = null
|
|
@@ -303,6 +365,8 @@ export class ResultFieldVisitor<A = BaseActor> extends IDL.Visitor<
|
|
|
303
365
|
return { ...node, inner: getInner().resolve(data), raw: data }
|
|
304
366
|
},
|
|
305
367
|
}
|
|
368
|
+
|
|
369
|
+
this.recCache.set(t, node)
|
|
306
370
|
return node
|
|
307
371
|
}
|
|
308
372
|
|
|
@@ -35,6 +35,7 @@ export type DisplayType =
|
|
|
35
35
|
| "result"
|
|
36
36
|
| "nullable"
|
|
37
37
|
| "recursive"
|
|
38
|
+
| "blob"
|
|
38
39
|
| "unknown"
|
|
39
40
|
|
|
40
41
|
export type NumberFormat = "timestamp" | "cycle" | "value" | "token" | "normal"
|
|
@@ -68,6 +69,8 @@ interface ResultNodeBase<T extends NodeType = NodeType> {
|
|
|
68
69
|
displayType: DisplayType
|
|
69
70
|
/** Original raw value before transformation (present after resolution) */
|
|
70
71
|
raw?: unknown
|
|
72
|
+
/** Value after display transformation (present after resolution) */
|
|
73
|
+
value?: unknown
|
|
71
74
|
}
|
|
72
75
|
|
|
73
76
|
// ════════════════════════════════════════════════════════════════════════════
|
|
@@ -86,7 +89,7 @@ type NodeTypeExtras<T extends NodeType> = T extends "record"
|
|
|
86
89
|
: T extends "recursive"
|
|
87
90
|
? { inner: ResultNode }
|
|
88
91
|
: T extends "blob"
|
|
89
|
-
? { value: string }
|
|
92
|
+
? { value: string | Uint8Array; hash: string; length: number }
|
|
90
93
|
: T extends "number"
|
|
91
94
|
? { format: NumberFormat; value: string | number }
|
|
92
95
|
: T extends "text" | "principal"
|
|
@@ -110,7 +113,6 @@ export type ResultNode<T extends NodeType = NodeType> = ResultNodeBase<T> &
|
|
|
110
113
|
NodeTypeExtras<T> & {
|
|
111
114
|
/** Resolve this node with a value, returning a new resolved node */
|
|
112
115
|
resolve(data: unknown): ResolvedNode<T>
|
|
113
|
-
value?: unknown
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
/**
|