@ic-reactor/candid 3.0.14-beta.2 → 3.0.14-beta.3
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.
|
@@ -25,38 +25,73 @@ interface ResultNodeBase<T extends VisitorDataType = VisitorDataType> {
|
|
|
25
25
|
/** Value after display transformation (present after resolution) */
|
|
26
26
|
value?: unknown;
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
interface RecordNodeExtras {
|
|
29
|
+
/** Child fields of the record */
|
|
29
30
|
fields: Record<string, ResultNode>;
|
|
30
|
-
}
|
|
31
|
+
}
|
|
32
|
+
interface VariantNodeExtras {
|
|
31
33
|
/** All variant options as schema */
|
|
32
34
|
options: Record<string, ResultNode>;
|
|
33
35
|
/** The resolved selected option value */
|
|
34
36
|
selectedValue: ResultNode;
|
|
35
37
|
/** The selected option key (populated after resolution) */
|
|
36
38
|
selected?: string;
|
|
37
|
-
}
|
|
39
|
+
}
|
|
40
|
+
interface TupleNodeExtras {
|
|
41
|
+
/** Tuple element fields */
|
|
38
42
|
items: ResultNode[];
|
|
39
|
-
}
|
|
43
|
+
}
|
|
44
|
+
interface VectorNodeExtras {
|
|
45
|
+
/** Vector element fields */
|
|
46
|
+
items: ResultNode[];
|
|
47
|
+
}
|
|
48
|
+
interface OptionalNodeExtras {
|
|
49
|
+
/** The inner value, or null if not enabled */
|
|
40
50
|
value: ResultNode | null;
|
|
41
|
-
}
|
|
51
|
+
}
|
|
52
|
+
interface RecursiveNodeExtras {
|
|
53
|
+
/** The resolved recursive inner type */
|
|
42
54
|
inner: ResultNode;
|
|
43
|
-
}
|
|
55
|
+
}
|
|
56
|
+
interface BlobNodeExtras {
|
|
57
|
+
/** The blob value as hex/base64 or Uint8Array */
|
|
44
58
|
value: string | Uint8Array;
|
|
59
|
+
/** Hash of the blob content */
|
|
45
60
|
hash: string;
|
|
61
|
+
/** Length in bytes */
|
|
46
62
|
length: number;
|
|
47
|
-
}
|
|
63
|
+
}
|
|
64
|
+
interface NumberNodeExtras {
|
|
65
|
+
/** Detected number format */
|
|
48
66
|
format: NumberFormat;
|
|
67
|
+
/** The numeric value */
|
|
49
68
|
value: string | number;
|
|
50
|
-
}
|
|
69
|
+
}
|
|
70
|
+
interface TextNodeExtras {
|
|
71
|
+
/** Detected text format */
|
|
51
72
|
format: TextFormat;
|
|
73
|
+
/** The text value */
|
|
52
74
|
value: string;
|
|
53
|
-
}
|
|
75
|
+
}
|
|
76
|
+
interface PrincipalNodeExtras {
|
|
77
|
+
/** Detected text format */
|
|
78
|
+
format: TextFormat;
|
|
79
|
+
/** The principal value as string */
|
|
80
|
+
value: string;
|
|
81
|
+
}
|
|
82
|
+
interface BooleanNodeExtras {
|
|
83
|
+
/** The boolean value */
|
|
54
84
|
value: boolean;
|
|
55
|
-
}
|
|
85
|
+
}
|
|
86
|
+
interface NullNodeExtras {
|
|
87
|
+
/** The null value */
|
|
56
88
|
value: null;
|
|
57
|
-
}
|
|
89
|
+
}
|
|
90
|
+
interface UnknownNodeExtras {
|
|
91
|
+
/** The unknown value */
|
|
58
92
|
value: unknown;
|
|
59
|
-
}
|
|
93
|
+
}
|
|
94
|
+
type NodeTypeExtras<T extends VisitorDataType> = T extends "record" ? RecordNodeExtras : T extends "variant" ? VariantNodeExtras : T extends "tuple" ? TupleNodeExtras : T extends "vector" ? VectorNodeExtras : T extends "optional" ? OptionalNodeExtras : T extends "recursive" ? RecursiveNodeExtras : T extends "blob" ? BlobNodeExtras : T extends "number" ? NumberNodeExtras : T extends "text" ? TextNodeExtras : T extends "principal" ? PrincipalNodeExtras : T extends "boolean" ? BooleanNodeExtras : T extends "null" ? NullNodeExtras : T extends "unknown" ? UnknownNodeExtras : {};
|
|
60
95
|
/**
|
|
61
96
|
* A unified result node that contains both schema and resolved value.
|
|
62
97
|
* When used as schema only, `raw` is undefined.
|
|
@@ -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;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEzE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,CAAA;AAMzD;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,UAAU,GACV,WAAW,GACX,MAAM,GACN,SAAS,CAAA;AAMb;;GAEG;AACH,UAAU,cAAc,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IAClE,+BAA+B;IAC/B,IAAI,EAAE,CAAC,CAAA;IACP,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAA;IACpB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,WAAW,EAAE,WAAW,CAAA;IACxB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAOD,
|
|
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.14-beta.
|
|
3
|
+
"version": "3.0.14-beta.3",
|
|
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",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@noble/hashes": "^2.0.1",
|
|
46
46
|
"zod": "^4.3.5",
|
|
47
|
-
"@ic-reactor/core": "^3.0.14-beta.
|
|
47
|
+
"@ic-reactor/core": "^3.0.14-beta.3"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"zod": "^4.3.5",
|
|
@@ -182,13 +182,12 @@ describe("FieldVisitor Schema Generation", () => {
|
|
|
182
182
|
],
|
|
183
183
|
"person"
|
|
184
184
|
)
|
|
185
|
-
const schema = field.schema as z.ZodObject<any>
|
|
186
185
|
|
|
187
186
|
const validData = { name: "John", age: "30" }
|
|
188
|
-
expect(schema.parse(validData)).toEqual(validData)
|
|
187
|
+
expect(field.schema.parse(validData)).toEqual(validData)
|
|
189
188
|
|
|
190
|
-
expect(() => schema.parse({ name: "John" })).toThrow() // missing age
|
|
191
|
-
expect(() => schema.parse({ name: 123, age: "30" })).toThrow() // invalid type
|
|
189
|
+
expect(() => field.schema.parse({ name: "John" })).toThrow() // missing age
|
|
190
|
+
expect(() => field.schema.parse({ name: 123, age: "30" })).toThrow() // invalid type
|
|
192
191
|
})
|
|
193
192
|
})
|
|
194
193
|
|
|
@@ -59,34 +59,112 @@ interface ResultNodeBase<T extends VisitorDataType = VisitorDataType> {
|
|
|
59
59
|
// For compound types, children are stored directly in their respective fields
|
|
60
60
|
// ════════════════════════════════════════════════════════════════════════════
|
|
61
61
|
|
|
62
|
+
interface RecordNodeExtras {
|
|
63
|
+
/** Child fields of the record */
|
|
64
|
+
fields: Record<string, ResultNode>
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
interface VariantNodeExtras {
|
|
68
|
+
/** All variant options as schema */
|
|
69
|
+
options: Record<string, ResultNode>
|
|
70
|
+
/** The resolved selected option value */
|
|
71
|
+
selectedValue: ResultNode
|
|
72
|
+
/** The selected option key (populated after resolution) */
|
|
73
|
+
selected?: string
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface TupleNodeExtras {
|
|
77
|
+
/** Tuple element fields */
|
|
78
|
+
items: ResultNode[]
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
interface VectorNodeExtras {
|
|
82
|
+
/** Vector element fields */
|
|
83
|
+
items: ResultNode[]
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
interface OptionalNodeExtras {
|
|
87
|
+
/** The inner value, or null if not enabled */
|
|
88
|
+
value: ResultNode | null
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
interface RecursiveNodeExtras {
|
|
92
|
+
/** The resolved recursive inner type */
|
|
93
|
+
inner: ResultNode
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
interface BlobNodeExtras {
|
|
97
|
+
/** The blob value as hex/base64 or Uint8Array */
|
|
98
|
+
value: string | Uint8Array
|
|
99
|
+
/** Hash of the blob content */
|
|
100
|
+
hash: string
|
|
101
|
+
/** Length in bytes */
|
|
102
|
+
length: number
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
interface NumberNodeExtras {
|
|
106
|
+
/** Detected number format */
|
|
107
|
+
format: NumberFormat
|
|
108
|
+
/** The numeric value */
|
|
109
|
+
value: string | number
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
interface TextNodeExtras {
|
|
113
|
+
/** Detected text format */
|
|
114
|
+
format: TextFormat
|
|
115
|
+
/** The text value */
|
|
116
|
+
value: string
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
interface PrincipalNodeExtras {
|
|
120
|
+
/** Detected text format */
|
|
121
|
+
format: TextFormat
|
|
122
|
+
/** The principal value as string */
|
|
123
|
+
value: string
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
interface BooleanNodeExtras {
|
|
127
|
+
/** The boolean value */
|
|
128
|
+
value: boolean
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
interface NullNodeExtras {
|
|
132
|
+
/** The null value */
|
|
133
|
+
value: null
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
interface UnknownNodeExtras {
|
|
137
|
+
/** The unknown value */
|
|
138
|
+
value: unknown
|
|
139
|
+
}
|
|
140
|
+
|
|
62
141
|
type NodeTypeExtras<T extends VisitorDataType> = T extends "record"
|
|
63
|
-
?
|
|
142
|
+
? RecordNodeExtras
|
|
64
143
|
: T extends "variant"
|
|
65
|
-
?
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
: { value: unknown } // unknown
|
|
144
|
+
? VariantNodeExtras
|
|
145
|
+
: T extends "tuple"
|
|
146
|
+
? TupleNodeExtras
|
|
147
|
+
: T extends "vector"
|
|
148
|
+
? VectorNodeExtras
|
|
149
|
+
: T extends "optional"
|
|
150
|
+
? OptionalNodeExtras
|
|
151
|
+
: T extends "recursive"
|
|
152
|
+
? RecursiveNodeExtras
|
|
153
|
+
: T extends "blob"
|
|
154
|
+
? BlobNodeExtras
|
|
155
|
+
: T extends "number"
|
|
156
|
+
? NumberNodeExtras
|
|
157
|
+
: T extends "text"
|
|
158
|
+
? TextNodeExtras
|
|
159
|
+
: T extends "principal"
|
|
160
|
+
? PrincipalNodeExtras
|
|
161
|
+
: T extends "boolean"
|
|
162
|
+
? BooleanNodeExtras
|
|
163
|
+
: T extends "null"
|
|
164
|
+
? NullNodeExtras
|
|
165
|
+
: T extends "unknown"
|
|
166
|
+
? UnknownNodeExtras
|
|
167
|
+
: {}
|
|
90
168
|
|
|
91
169
|
/**
|
|
92
170
|
* A unified result node that contains both schema and resolved value.
|