@varavel/vdl-plugin-sdk 0.0.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.
- package/LICENSE +21 -0
- package/dist/ir.cjs +420 -0
- package/dist/ir.cjs.map +1 -0
- package/dist/ir.d.cts +213 -0
- package/dist/ir.d.cts.map +1 -0
- package/dist/ir.d.ts +213 -0
- package/dist/ir.d.ts.map +1 -0
- package/dist/ir.js +388 -0
- package/dist/ir.js.map +1 -0
- package/package.json +55 -0
- package/src/ir.ts +978 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Varavel LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/ir.cjs
ADDED
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/ir.ts
|
|
3
|
+
const EnumValueTypeList = ["string", "int"];
|
|
4
|
+
function isEnumValueType(value) {
|
|
5
|
+
return EnumValueTypeList.includes(value);
|
|
6
|
+
}
|
|
7
|
+
const LiteralKindList = [
|
|
8
|
+
"string",
|
|
9
|
+
"int",
|
|
10
|
+
"float",
|
|
11
|
+
"bool",
|
|
12
|
+
"object",
|
|
13
|
+
"array"
|
|
14
|
+
];
|
|
15
|
+
function isLiteralKind(value) {
|
|
16
|
+
return LiteralKindList.includes(value);
|
|
17
|
+
}
|
|
18
|
+
const PrimitiveTypeList = [
|
|
19
|
+
"string",
|
|
20
|
+
"int",
|
|
21
|
+
"float",
|
|
22
|
+
"bool",
|
|
23
|
+
"datetime"
|
|
24
|
+
];
|
|
25
|
+
function isPrimitiveType(value) {
|
|
26
|
+
return PrimitiveTypeList.includes(value);
|
|
27
|
+
}
|
|
28
|
+
const TypeKindList = [
|
|
29
|
+
"primitive",
|
|
30
|
+
"type",
|
|
31
|
+
"enum",
|
|
32
|
+
"array",
|
|
33
|
+
"map",
|
|
34
|
+
"object"
|
|
35
|
+
];
|
|
36
|
+
function isTypeKind(value) {
|
|
37
|
+
return TypeKindList.includes(value);
|
|
38
|
+
}
|
|
39
|
+
function hydrateAnnotation(input) {
|
|
40
|
+
return {
|
|
41
|
+
position: hydratePosition(input.position),
|
|
42
|
+
name: input.name,
|
|
43
|
+
argument: input.argument ? hydrateLiteralValue(input.argument) : input.argument
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function validateAnnotation(input, path = "Annotation") {
|
|
47
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
48
|
+
const obj = input;
|
|
49
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
50
|
+
{
|
|
51
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
52
|
+
if (err !== null) return err;
|
|
53
|
+
}
|
|
54
|
+
if (obj.argument !== void 0 && obj.argument !== null) {
|
|
55
|
+
const err = validateLiteralValue(obj.argument, `${path}.argument`);
|
|
56
|
+
if (err !== null) return err;
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
function hydrateConstantDef(input) {
|
|
61
|
+
return {
|
|
62
|
+
position: hydratePosition(input.position),
|
|
63
|
+
name: input.name,
|
|
64
|
+
doc: input.doc ? input.doc : input.doc,
|
|
65
|
+
annotations: input.annotations.map((el) => hydrateAnnotation(el)),
|
|
66
|
+
typeRef: hydrateTypeRef(input.typeRef),
|
|
67
|
+
value: hydrateLiteralValue(input.value)
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function validateConstantDef(input, path = "ConstantDef") {
|
|
71
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
72
|
+
const obj = input;
|
|
73
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
74
|
+
{
|
|
75
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
76
|
+
if (err !== null) return err;
|
|
77
|
+
}
|
|
78
|
+
if (obj.annotations === void 0 || obj.annotations === null) return `${path}.annotations: required field is missing`;
|
|
79
|
+
if (!Array.isArray(obj.annotations)) return `${path}.annotations: expected array, got ${typeof obj.annotations}`;
|
|
80
|
+
for (let i = 0; i < obj.annotations.length; i++) {
|
|
81
|
+
const err = validateAnnotation(obj.annotations[i], `${path}.annotations[${i}]`);
|
|
82
|
+
if (err !== null) return err;
|
|
83
|
+
}
|
|
84
|
+
if (obj.typeRef === void 0 || obj.typeRef === null) return `${path}.typeRef: required field is missing`;
|
|
85
|
+
{
|
|
86
|
+
const err = validateTypeRef(obj.typeRef, `${path}.typeRef`);
|
|
87
|
+
if (err !== null) return err;
|
|
88
|
+
}
|
|
89
|
+
if (obj.value === void 0 || obj.value === null) return `${path}.value: required field is missing`;
|
|
90
|
+
{
|
|
91
|
+
const err = validateLiteralValue(obj.value, `${path}.value`);
|
|
92
|
+
if (err !== null) return err;
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function hydrateEnumDef(input) {
|
|
97
|
+
return {
|
|
98
|
+
position: hydratePosition(input.position),
|
|
99
|
+
name: input.name,
|
|
100
|
+
doc: input.doc ? input.doc : input.doc,
|
|
101
|
+
annotations: input.annotations.map((el) => hydrateAnnotation(el)),
|
|
102
|
+
enumType: input.enumType,
|
|
103
|
+
members: input.members.map((el) => hydrateEnumMember(el))
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function validateEnumDef(input, path = "EnumDef") {
|
|
107
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
108
|
+
const obj = input;
|
|
109
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
110
|
+
{
|
|
111
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
112
|
+
if (err !== null) return err;
|
|
113
|
+
}
|
|
114
|
+
if (obj.annotations === void 0 || obj.annotations === null) return `${path}.annotations: required field is missing`;
|
|
115
|
+
if (!Array.isArray(obj.annotations)) return `${path}.annotations: expected array, got ${typeof obj.annotations}`;
|
|
116
|
+
for (let i = 0; i < obj.annotations.length; i++) {
|
|
117
|
+
const err = validateAnnotation(obj.annotations[i], `${path}.annotations[${i}]`);
|
|
118
|
+
if (err !== null) return err;
|
|
119
|
+
}
|
|
120
|
+
if (obj.enumType === void 0 || obj.enumType === null) return `${path}.enumType: required field is missing`;
|
|
121
|
+
if (!isEnumValueType(obj.enumType)) return `${path}.enumType: invalid enum value '${obj.enumType}' for EnumValueType`;
|
|
122
|
+
if (obj.members === void 0 || obj.members === null) return `${path}.members: required field is missing`;
|
|
123
|
+
if (!Array.isArray(obj.members)) return `${path}.members: expected array, got ${typeof obj.members}`;
|
|
124
|
+
for (let i = 0; i < obj.members.length; i++) {
|
|
125
|
+
const err = validateEnumMember(obj.members[i], `${path}.members[${i}]`);
|
|
126
|
+
if (err !== null) return err;
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
function hydrateEnumMember(input) {
|
|
131
|
+
return {
|
|
132
|
+
position: hydratePosition(input.position),
|
|
133
|
+
name: input.name,
|
|
134
|
+
value: hydrateLiteralValue(input.value),
|
|
135
|
+
doc: input.doc ? input.doc : input.doc,
|
|
136
|
+
annotations: input.annotations.map((el) => hydrateAnnotation(el))
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function validateEnumMember(input, path = "EnumMember") {
|
|
140
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
141
|
+
const obj = input;
|
|
142
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
143
|
+
{
|
|
144
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
145
|
+
if (err !== null) return err;
|
|
146
|
+
}
|
|
147
|
+
if (obj.value === void 0 || obj.value === null) return `${path}.value: required field is missing`;
|
|
148
|
+
{
|
|
149
|
+
const err = validateLiteralValue(obj.value, `${path}.value`);
|
|
150
|
+
if (err !== null) return err;
|
|
151
|
+
}
|
|
152
|
+
if (obj.annotations === void 0 || obj.annotations === null) return `${path}.annotations: required field is missing`;
|
|
153
|
+
if (!Array.isArray(obj.annotations)) return `${path}.annotations: expected array, got ${typeof obj.annotations}`;
|
|
154
|
+
for (let i = 0; i < obj.annotations.length; i++) {
|
|
155
|
+
const err = validateAnnotation(obj.annotations[i], `${path}.annotations[${i}]`);
|
|
156
|
+
if (err !== null) return err;
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
function hydrateField(input) {
|
|
161
|
+
return {
|
|
162
|
+
position: hydratePosition(input.position),
|
|
163
|
+
name: input.name,
|
|
164
|
+
doc: input.doc ? input.doc : input.doc,
|
|
165
|
+
optional: input.optional,
|
|
166
|
+
annotations: input.annotations.map((el) => hydrateAnnotation(el)),
|
|
167
|
+
typeRef: hydrateTypeRef(input.typeRef)
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function validateField(input, path = "Field") {
|
|
171
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
172
|
+
const obj = input;
|
|
173
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
174
|
+
{
|
|
175
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
176
|
+
if (err !== null) return err;
|
|
177
|
+
}
|
|
178
|
+
if (obj.annotations === void 0 || obj.annotations === null) return `${path}.annotations: required field is missing`;
|
|
179
|
+
if (!Array.isArray(obj.annotations)) return `${path}.annotations: expected array, got ${typeof obj.annotations}`;
|
|
180
|
+
for (let i = 0; i < obj.annotations.length; i++) {
|
|
181
|
+
const err = validateAnnotation(obj.annotations[i], `${path}.annotations[${i}]`);
|
|
182
|
+
if (err !== null) return err;
|
|
183
|
+
}
|
|
184
|
+
if (obj.typeRef === void 0 || obj.typeRef === null) return `${path}.typeRef: required field is missing`;
|
|
185
|
+
{
|
|
186
|
+
const err = validateTypeRef(obj.typeRef, `${path}.typeRef`);
|
|
187
|
+
if (err !== null) return err;
|
|
188
|
+
}
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
function hydrateIrSchema(input) {
|
|
192
|
+
return {
|
|
193
|
+
entryPoint: input.entryPoint,
|
|
194
|
+
constants: input.constants.map((el) => hydrateConstantDef(el)),
|
|
195
|
+
enums: input.enums.map((el) => hydrateEnumDef(el)),
|
|
196
|
+
types: input.types.map((el) => hydrateTypeDef(el)),
|
|
197
|
+
docs: input.docs.map((el) => hydrateTopLevelDoc(el))
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
function validateIrSchema(input, path = "IrSchema") {
|
|
201
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
202
|
+
const obj = input;
|
|
203
|
+
if (obj.constants === void 0 || obj.constants === null) return `${path}.constants: required field is missing`;
|
|
204
|
+
if (!Array.isArray(obj.constants)) return `${path}.constants: expected array, got ${typeof obj.constants}`;
|
|
205
|
+
for (let i = 0; i < obj.constants.length; i++) {
|
|
206
|
+
const err = validateConstantDef(obj.constants[i], `${path}.constants[${i}]`);
|
|
207
|
+
if (err !== null) return err;
|
|
208
|
+
}
|
|
209
|
+
if (obj.enums === void 0 || obj.enums === null) return `${path}.enums: required field is missing`;
|
|
210
|
+
if (!Array.isArray(obj.enums)) return `${path}.enums: expected array, got ${typeof obj.enums}`;
|
|
211
|
+
for (let i = 0; i < obj.enums.length; i++) {
|
|
212
|
+
const err = validateEnumDef(obj.enums[i], `${path}.enums[${i}]`);
|
|
213
|
+
if (err !== null) return err;
|
|
214
|
+
}
|
|
215
|
+
if (obj.types === void 0 || obj.types === null) return `${path}.types: required field is missing`;
|
|
216
|
+
if (!Array.isArray(obj.types)) return `${path}.types: expected array, got ${typeof obj.types}`;
|
|
217
|
+
for (let i = 0; i < obj.types.length; i++) {
|
|
218
|
+
const err = validateTypeDef(obj.types[i], `${path}.types[${i}]`);
|
|
219
|
+
if (err !== null) return err;
|
|
220
|
+
}
|
|
221
|
+
if (obj.docs === void 0 || obj.docs === null) return `${path}.docs: required field is missing`;
|
|
222
|
+
if (!Array.isArray(obj.docs)) return `${path}.docs: expected array, got ${typeof obj.docs}`;
|
|
223
|
+
for (let i = 0; i < obj.docs.length; i++) {
|
|
224
|
+
const err = validateTopLevelDoc(obj.docs[i], `${path}.docs[${i}]`);
|
|
225
|
+
if (err !== null) return err;
|
|
226
|
+
}
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
function hydrateLiteralValue(input) {
|
|
230
|
+
return {
|
|
231
|
+
position: hydratePosition(input.position),
|
|
232
|
+
kind: input.kind,
|
|
233
|
+
stringValue: input.stringValue ? input.stringValue : input.stringValue,
|
|
234
|
+
intValue: input.intValue ? input.intValue : input.intValue,
|
|
235
|
+
floatValue: input.floatValue ? input.floatValue : input.floatValue,
|
|
236
|
+
boolValue: input.boolValue ? input.boolValue : input.boolValue,
|
|
237
|
+
objectEntries: input.objectEntries ? input.objectEntries.map((el) => hydrateObjectEntry(el)) : input.objectEntries,
|
|
238
|
+
arrayItems: input.arrayItems ? input.arrayItems.map((el) => hydrateLiteralValue(el)) : input.arrayItems
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
function validateLiteralValue(input, path = "LiteralValue") {
|
|
242
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
243
|
+
const obj = input;
|
|
244
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
245
|
+
{
|
|
246
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
247
|
+
if (err !== null) return err;
|
|
248
|
+
}
|
|
249
|
+
if (obj.kind === void 0 || obj.kind === null) return `${path}.kind: required field is missing`;
|
|
250
|
+
if (!isLiteralKind(obj.kind)) return `${path}.kind: invalid enum value '${obj.kind}' for LiteralKind`;
|
|
251
|
+
if (obj.objectEntries !== void 0 && obj.objectEntries !== null) {
|
|
252
|
+
if (!Array.isArray(obj.objectEntries)) return `${path}.objectEntries: expected array, got ${typeof obj.objectEntries}`;
|
|
253
|
+
for (let i = 0; i < obj.objectEntries.length; i++) {
|
|
254
|
+
const err = validateObjectEntry(obj.objectEntries[i], `${path}.objectEntries[${i}]`);
|
|
255
|
+
if (err !== null) return err;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (obj.arrayItems !== void 0 && obj.arrayItems !== null) {
|
|
259
|
+
if (!Array.isArray(obj.arrayItems)) return `${path}.arrayItems: expected array, got ${typeof obj.arrayItems}`;
|
|
260
|
+
for (let i = 0; i < obj.arrayItems.length; i++) {
|
|
261
|
+
const err = validateLiteralValue(obj.arrayItems[i], `${path}.arrayItems[${i}]`);
|
|
262
|
+
if (err !== null) return err;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
function hydrateObjectEntry(input) {
|
|
268
|
+
return {
|
|
269
|
+
position: hydratePosition(input.position),
|
|
270
|
+
key: input.key,
|
|
271
|
+
value: hydrateLiteralValue(input.value)
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
function validateObjectEntry(input, path = "ObjectEntry") {
|
|
275
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
276
|
+
const obj = input;
|
|
277
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
278
|
+
{
|
|
279
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
280
|
+
if (err !== null) return err;
|
|
281
|
+
}
|
|
282
|
+
if (obj.value === void 0 || obj.value === null) return `${path}.value: required field is missing`;
|
|
283
|
+
{
|
|
284
|
+
const err = validateLiteralValue(obj.value, `${path}.value`);
|
|
285
|
+
if (err !== null) return err;
|
|
286
|
+
}
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
function hydratePosition(input) {
|
|
290
|
+
return {
|
|
291
|
+
file: input.file,
|
|
292
|
+
line: input.line,
|
|
293
|
+
column: input.column
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
function validatePosition(_input, _path = "Position") {
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
function hydrateTopLevelDoc(input) {
|
|
300
|
+
return {
|
|
301
|
+
position: hydratePosition(input.position),
|
|
302
|
+
content: input.content
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
function validateTopLevelDoc(input, path = "TopLevelDoc") {
|
|
306
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
307
|
+
const obj = input;
|
|
308
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
309
|
+
{
|
|
310
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
311
|
+
if (err !== null) return err;
|
|
312
|
+
}
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
function hydrateTypeDef(input) {
|
|
316
|
+
return {
|
|
317
|
+
position: hydratePosition(input.position),
|
|
318
|
+
name: input.name,
|
|
319
|
+
doc: input.doc ? input.doc : input.doc,
|
|
320
|
+
annotations: input.annotations.map((el) => hydrateAnnotation(el)),
|
|
321
|
+
typeRef: hydrateTypeRef(input.typeRef)
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
function validateTypeDef(input, path = "TypeDef") {
|
|
325
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
326
|
+
const obj = input;
|
|
327
|
+
if (obj.position === void 0 || obj.position === null) return `${path}.position: required field is missing`;
|
|
328
|
+
{
|
|
329
|
+
const err = validatePosition(obj.position, `${path}.position`);
|
|
330
|
+
if (err !== null) return err;
|
|
331
|
+
}
|
|
332
|
+
if (obj.annotations === void 0 || obj.annotations === null) return `${path}.annotations: required field is missing`;
|
|
333
|
+
if (!Array.isArray(obj.annotations)) return `${path}.annotations: expected array, got ${typeof obj.annotations}`;
|
|
334
|
+
for (let i = 0; i < obj.annotations.length; i++) {
|
|
335
|
+
const err = validateAnnotation(obj.annotations[i], `${path}.annotations[${i}]`);
|
|
336
|
+
if (err !== null) return err;
|
|
337
|
+
}
|
|
338
|
+
if (obj.typeRef === void 0 || obj.typeRef === null) return `${path}.typeRef: required field is missing`;
|
|
339
|
+
{
|
|
340
|
+
const err = validateTypeRef(obj.typeRef, `${path}.typeRef`);
|
|
341
|
+
if (err !== null) return err;
|
|
342
|
+
}
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
function hydrateTypeRef(input) {
|
|
346
|
+
return {
|
|
347
|
+
kind: input.kind,
|
|
348
|
+
primitiveName: input.primitiveName ? input.primitiveName : input.primitiveName,
|
|
349
|
+
typeName: input.typeName ? input.typeName : input.typeName,
|
|
350
|
+
enumName: input.enumName ? input.enumName : input.enumName,
|
|
351
|
+
enumType: input.enumType ? input.enumType : input.enumType,
|
|
352
|
+
arrayType: input.arrayType ? hydrateTypeRef(input.arrayType) : input.arrayType,
|
|
353
|
+
arrayDims: input.arrayDims ? input.arrayDims : input.arrayDims,
|
|
354
|
+
mapType: input.mapType ? hydrateTypeRef(input.mapType) : input.mapType,
|
|
355
|
+
objectFields: input.objectFields ? input.objectFields.map((el) => hydrateField(el)) : input.objectFields
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
function validateTypeRef(input, path = "TypeRef") {
|
|
359
|
+
if (input === null || input === void 0 || typeof input !== "object") return `${path}: expected object, got ${typeof input}`;
|
|
360
|
+
const obj = input;
|
|
361
|
+
if (obj.kind === void 0 || obj.kind === null) return `${path}.kind: required field is missing`;
|
|
362
|
+
if (!isTypeKind(obj.kind)) return `${path}.kind: invalid enum value '${obj.kind}' for TypeKind`;
|
|
363
|
+
if (obj.primitiveName !== void 0 && obj.primitiveName !== null) {
|
|
364
|
+
if (!isPrimitiveType(obj.primitiveName)) return `${path}.primitiveName: invalid enum value '${obj.primitiveName}' for PrimitiveType`;
|
|
365
|
+
}
|
|
366
|
+
if (obj.enumType !== void 0 && obj.enumType !== null) {
|
|
367
|
+
if (!isEnumValueType(obj.enumType)) return `${path}.enumType: invalid enum value '${obj.enumType}' for EnumValueType`;
|
|
368
|
+
}
|
|
369
|
+
if (obj.arrayType !== void 0 && obj.arrayType !== null) {
|
|
370
|
+
const err = validateTypeRef(obj.arrayType, `${path}.arrayType`);
|
|
371
|
+
if (err !== null) return err;
|
|
372
|
+
}
|
|
373
|
+
if (obj.mapType !== void 0 && obj.mapType !== null) {
|
|
374
|
+
const err = validateTypeRef(obj.mapType, `${path}.mapType`);
|
|
375
|
+
if (err !== null) return err;
|
|
376
|
+
}
|
|
377
|
+
if (obj.objectFields !== void 0 && obj.objectFields !== null) {
|
|
378
|
+
if (!Array.isArray(obj.objectFields)) return `${path}.objectFields: expected array, got ${typeof obj.objectFields}`;
|
|
379
|
+
for (let i = 0; i < obj.objectFields.length; i++) {
|
|
380
|
+
const err = validateField(obj.objectFields[i], `${path}.objectFields[${i}]`);
|
|
381
|
+
if (err !== null) return err;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return null;
|
|
385
|
+
}
|
|
386
|
+
//#endregion
|
|
387
|
+
exports.EnumValueTypeList = EnumValueTypeList;
|
|
388
|
+
exports.LiteralKindList = LiteralKindList;
|
|
389
|
+
exports.PrimitiveTypeList = PrimitiveTypeList;
|
|
390
|
+
exports.TypeKindList = TypeKindList;
|
|
391
|
+
exports.hydrateAnnotation = hydrateAnnotation;
|
|
392
|
+
exports.hydrateConstantDef = hydrateConstantDef;
|
|
393
|
+
exports.hydrateEnumDef = hydrateEnumDef;
|
|
394
|
+
exports.hydrateEnumMember = hydrateEnumMember;
|
|
395
|
+
exports.hydrateField = hydrateField;
|
|
396
|
+
exports.hydrateIrSchema = hydrateIrSchema;
|
|
397
|
+
exports.hydrateLiteralValue = hydrateLiteralValue;
|
|
398
|
+
exports.hydrateObjectEntry = hydrateObjectEntry;
|
|
399
|
+
exports.hydratePosition = hydratePosition;
|
|
400
|
+
exports.hydrateTopLevelDoc = hydrateTopLevelDoc;
|
|
401
|
+
exports.hydrateTypeDef = hydrateTypeDef;
|
|
402
|
+
exports.hydrateTypeRef = hydrateTypeRef;
|
|
403
|
+
exports.isEnumValueType = isEnumValueType;
|
|
404
|
+
exports.isLiteralKind = isLiteralKind;
|
|
405
|
+
exports.isPrimitiveType = isPrimitiveType;
|
|
406
|
+
exports.isTypeKind = isTypeKind;
|
|
407
|
+
exports.validateAnnotation = validateAnnotation;
|
|
408
|
+
exports.validateConstantDef = validateConstantDef;
|
|
409
|
+
exports.validateEnumDef = validateEnumDef;
|
|
410
|
+
exports.validateEnumMember = validateEnumMember;
|
|
411
|
+
exports.validateField = validateField;
|
|
412
|
+
exports.validateIrSchema = validateIrSchema;
|
|
413
|
+
exports.validateLiteralValue = validateLiteralValue;
|
|
414
|
+
exports.validateObjectEntry = validateObjectEntry;
|
|
415
|
+
exports.validatePosition = validatePosition;
|
|
416
|
+
exports.validateTopLevelDoc = validateTopLevelDoc;
|
|
417
|
+
exports.validateTypeDef = validateTypeDef;
|
|
418
|
+
exports.validateTypeRef = validateTypeRef;
|
|
419
|
+
|
|
420
|
+
//# sourceMappingURL=ir.cjs.map
|
package/dist/ir.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir.cjs","names":[],"sources":["../src/ir.ts"],"sourcesContent":["// Code generated by VDL v0.4.0-alpha.5. DO NOT EDIT.\n// If you edit this file, it will be overwritten the next time it is generated.\n//\n// For more information about VDL, visit https://vdl.varavel.com\n\n/* eslint-disable */\n/* tslint:disable */\n// biome-ignore-all lint: Generated by VDL\n\n// -----------------------------------------------------------------------------\n// Enumerations\n// -----------------------------------------------------------------------------\n\n/**\n * Underlying storage kind used by an enum\n */\nexport type EnumValueType = \"string\" | \"int\";\n\nexport const EnumValueTypeList: EnumValueType[] = [\"string\", \"int\"];\n\nexport function isEnumValueType(value: unknown): value is EnumValueType {\n return EnumValueTypeList.includes(value as EnumValueType);\n}\n\n/**\n * Kind discriminator for LiteralValue.\n *\n * LiteralValue is used for fully resolved literal data in:\n *\n * - constant values\n * - annotation arguments\n */\nexport type LiteralKind =\n | \"string\"\n | \"int\"\n | \"float\"\n | \"bool\"\n | \"object\"\n | \"array\";\n\nexport const LiteralKindList: LiteralKind[] = [\n \"string\",\n \"int\",\n \"float\",\n \"bool\",\n \"object\",\n \"array\",\n];\n\nexport function isLiteralKind(value: unknown): value is LiteralKind {\n return LiteralKindList.includes(value as LiteralKind);\n}\n\n/**\n * Primitive scalar type names\n */\nexport type PrimitiveType = \"string\" | \"int\" | \"float\" | \"bool\" | \"datetime\";\n\nexport const PrimitiveTypeList: PrimitiveType[] = [\n \"string\",\n \"int\",\n \"float\",\n \"bool\",\n \"datetime\",\n];\n\nexport function isPrimitiveType(value: unknown): value is PrimitiveType {\n return PrimitiveTypeList.includes(value as PrimitiveType);\n}\n\n/**\n * Kind discriminator for TypeRef\n */\nexport type TypeKind =\n | \"primitive\"\n | \"type\"\n | \"enum\"\n | \"array\"\n | \"map\"\n | \"object\";\n\nexport const TypeKindList: TypeKind[] = [\n \"primitive\",\n \"type\",\n \"enum\",\n \"array\",\n \"map\",\n \"object\",\n];\n\nexport function isTypeKind(value: unknown): value is TypeKind {\n return TypeKindList.includes(value as TypeKind);\n}\n\n// -----------------------------------------------------------------------------\n// Domain Types\n// -----------------------------------------------------------------------------\n\n/**\n * Annotation Annotation metadata preserved in IR.\n *\n * `name` is the annotation identifier without the `@` prefix.\n * `argument`, when present, is fully resolved as a LiteralValue.\n */\nexport type Annotation = {\n position: Position;\n name: string;\n argument?: LiteralValue;\n};\n\nexport function hydrateAnnotation(input: Annotation): Annotation {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedName = input.name;\n const hydratedArgument = input.argument\n ? hydrateLiteralValue(input.argument)\n : input.argument;\n return {\n position: hydratedPosition,\n name: hydratedName,\n argument: hydratedArgument,\n };\n}\n\nexport function validateAnnotation(\n input: unknown,\n path = \"Annotation\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n if (obj.argument !== undefined && obj.argument !== null) {\n {\n const err = validateLiteralValue(obj.argument, `${path}.argument`);\n if (err !== null) return err;\n }\n }\n return null;\n}\n\n/**\n * ConstantDef Fully resolved constant definition.\n *\n * `typeRef` is explicit or inferred by analysis.\n * `value` contains the fully resolved literal payload.\n */\nexport type ConstantDef = {\n position: Position;\n name: string;\n doc?: string;\n annotations: Annotation[];\n typeRef: TypeRef;\n value: LiteralValue;\n};\n\nexport function hydrateConstantDef(input: ConstantDef): ConstantDef {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedName = input.name;\n const hydratedDoc = input.doc ? input.doc : input.doc;\n const hydratedAnnotations = input.annotations.map((el) =>\n hydrateAnnotation(el),\n );\n const hydratedTypeRef = hydrateTypeRef(input.typeRef);\n const hydratedValue = hydrateLiteralValue(input.value);\n return {\n position: hydratedPosition,\n name: hydratedName,\n doc: hydratedDoc,\n annotations: hydratedAnnotations,\n typeRef: hydratedTypeRef,\n value: hydratedValue,\n };\n}\n\nexport function validateConstantDef(\n input: unknown,\n path = \"ConstantDef\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n if (obj.annotations === undefined || obj.annotations === null) {\n return `${path}.annotations: required field is missing`;\n }\n {\n if (!Array.isArray(obj.annotations)) {\n return `${path}.annotations: expected array, got ${typeof obj.annotations}`;\n }\n for (let i = 0; i < obj.annotations.length; i++) {\n {\n const err = validateAnnotation(\n obj.annotations[i],\n `${path}.annotations[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n if (obj.typeRef === undefined || obj.typeRef === null) {\n return `${path}.typeRef: required field is missing`;\n }\n {\n const err = validateTypeRef(obj.typeRef, `${path}.typeRef`);\n if (err !== null) return err;\n }\n if (obj.value === undefined || obj.value === null) {\n return `${path}.value: required field is missing`;\n }\n {\n const err = validateLiteralValue(obj.value, `${path}.value`);\n if (err !== null) return err;\n }\n return null;\n}\n\n/**\n * EnumDef Flattened enum definition.\n *\n * All enum spreads are already expanded into `members`.\n */\nexport type EnumDef = {\n position: Position;\n name: string;\n doc?: string;\n annotations: Annotation[];\n enumType: EnumValueType;\n members: EnumMember[];\n};\n\nexport function hydrateEnumDef(input: EnumDef): EnumDef {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedName = input.name;\n const hydratedDoc = input.doc ? input.doc : input.doc;\n const hydratedAnnotations = input.annotations.map((el) =>\n hydrateAnnotation(el),\n );\n const hydratedEnumType = input.enumType;\n const hydratedMembers = input.members.map((el) => hydrateEnumMember(el));\n return {\n position: hydratedPosition,\n name: hydratedName,\n doc: hydratedDoc,\n annotations: hydratedAnnotations,\n enumType: hydratedEnumType,\n members: hydratedMembers,\n };\n}\n\nexport function validateEnumDef(\n input: unknown,\n path = \"EnumDef\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n if (obj.annotations === undefined || obj.annotations === null) {\n return `${path}.annotations: required field is missing`;\n }\n {\n if (!Array.isArray(obj.annotations)) {\n return `${path}.annotations: expected array, got ${typeof obj.annotations}`;\n }\n for (let i = 0; i < obj.annotations.length; i++) {\n {\n const err = validateAnnotation(\n obj.annotations[i],\n `${path}.annotations[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n if (obj.enumType === undefined || obj.enumType === null) {\n return `${path}.enumType: required field is missing`;\n }\n {\n if (!isEnumValueType(obj.enumType)) {\n return `${path}.enumType: invalid enum value '${obj.enumType}' for EnumValueType`;\n }\n }\n if (obj.members === undefined || obj.members === null) {\n return `${path}.members: required field is missing`;\n }\n {\n if (!Array.isArray(obj.members)) {\n return `${path}.members: expected array, got ${typeof obj.members}`;\n }\n for (let i = 0; i < obj.members.length; i++) {\n {\n const err = validateEnumMember(obj.members[i], `${path}.members[${i}]`);\n if (err !== null) return err;\n }\n }\n }\n return null;\n}\n\n/**\n * EnumMember Enum member definition\n */\nexport type EnumMember = {\n position: Position;\n name: string;\n value: LiteralValue;\n doc?: string;\n annotations: Annotation[];\n};\n\nexport function hydrateEnumMember(input: EnumMember): EnumMember {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedName = input.name;\n const hydratedValue = hydrateLiteralValue(input.value);\n const hydratedDoc = input.doc ? input.doc : input.doc;\n const hydratedAnnotations = input.annotations.map((el) =>\n hydrateAnnotation(el),\n );\n return {\n position: hydratedPosition,\n name: hydratedName,\n value: hydratedValue,\n doc: hydratedDoc,\n annotations: hydratedAnnotations,\n };\n}\n\nexport function validateEnumMember(\n input: unknown,\n path = \"EnumMember\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n if (obj.value === undefined || obj.value === null) {\n return `${path}.value: required field is missing`;\n }\n {\n const err = validateLiteralValue(obj.value, `${path}.value`);\n if (err !== null) return err;\n }\n if (obj.annotations === undefined || obj.annotations === null) {\n return `${path}.annotations: required field is missing`;\n }\n {\n if (!Array.isArray(obj.annotations)) {\n return `${path}.annotations: expected array, got ${typeof obj.annotations}`;\n }\n for (let i = 0; i < obj.annotations.length; i++) {\n {\n const err = validateAnnotation(\n obj.annotations[i],\n `${path}.annotations[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n return null;\n}\n\n/**\n * Field Flattened object/type field definition\n */\nexport type Field = {\n position: Position;\n name: string;\n doc?: string;\n optional: boolean;\n annotations: Annotation[];\n typeRef: TypeRef;\n};\n\nexport function hydrateField(input: Field): Field {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedName = input.name;\n const hydratedDoc = input.doc ? input.doc : input.doc;\n const hydratedOptional = input.optional;\n const hydratedAnnotations = input.annotations.map((el) =>\n hydrateAnnotation(el),\n );\n const hydratedTypeRef = hydrateTypeRef(input.typeRef);\n return {\n position: hydratedPosition,\n name: hydratedName,\n doc: hydratedDoc,\n optional: hydratedOptional,\n annotations: hydratedAnnotations,\n typeRef: hydratedTypeRef,\n };\n}\n\nexport function validateField(input: unknown, path = \"Field\"): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n if (obj.annotations === undefined || obj.annotations === null) {\n return `${path}.annotations: required field is missing`;\n }\n {\n if (!Array.isArray(obj.annotations)) {\n return `${path}.annotations: expected array, got ${typeof obj.annotations}`;\n }\n for (let i = 0; i < obj.annotations.length; i++) {\n {\n const err = validateAnnotation(\n obj.annotations[i],\n `${path}.annotations[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n if (obj.typeRef === undefined || obj.typeRef === null) {\n return `${path}.typeRef: required field is missing`;\n }\n {\n const err = validateTypeRef(obj.typeRef, `${path}.typeRef`);\n if (err !== null) return err;\n }\n return null;\n}\n\n/**\n * IrSchema IrSchema is the generator-facing representation of a VDL program.\n *\n * This model is intentionally \"flat\" and \"resolved\":\n *\n * - spreads are already expanded\n * - references are already resolved\n * - collections are in deterministic order\n *\n * A code generator should be able to consume IrSchema directly, without needing\n * to re-run parser or semantic-analysis logic.\n */\nexport type IrSchema = {\n entryPoint: string;\n constants: ConstantDef[];\n enums: EnumDef[];\n types: TypeDef[];\n docs: TopLevelDoc[];\n};\n\nexport function hydrateIrSchema(input: IrSchema): IrSchema {\n const hydratedEntryPoint = input.entryPoint;\n const hydratedConstants = input.constants.map((el) => hydrateConstantDef(el));\n const hydratedEnums = input.enums.map((el) => hydrateEnumDef(el));\n const hydratedTypes = input.types.map((el) => hydrateTypeDef(el));\n const hydratedDocs = input.docs.map((el) => hydrateTopLevelDoc(el));\n return {\n entryPoint: hydratedEntryPoint,\n constants: hydratedConstants,\n enums: hydratedEnums,\n types: hydratedTypes,\n docs: hydratedDocs,\n };\n}\n\nexport function validateIrSchema(\n input: unknown,\n path = \"IrSchema\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.constants === undefined || obj.constants === null) {\n return `${path}.constants: required field is missing`;\n }\n {\n if (!Array.isArray(obj.constants)) {\n return `${path}.constants: expected array, got ${typeof obj.constants}`;\n }\n for (let i = 0; i < obj.constants.length; i++) {\n {\n const err = validateConstantDef(\n obj.constants[i],\n `${path}.constants[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n if (obj.enums === undefined || obj.enums === null) {\n return `${path}.enums: required field is missing`;\n }\n {\n if (!Array.isArray(obj.enums)) {\n return `${path}.enums: expected array, got ${typeof obj.enums}`;\n }\n for (let i = 0; i < obj.enums.length; i++) {\n {\n const err = validateEnumDef(obj.enums[i], `${path}.enums[${i}]`);\n if (err !== null) return err;\n }\n }\n }\n if (obj.types === undefined || obj.types === null) {\n return `${path}.types: required field is missing`;\n }\n {\n if (!Array.isArray(obj.types)) {\n return `${path}.types: expected array, got ${typeof obj.types}`;\n }\n for (let i = 0; i < obj.types.length; i++) {\n {\n const err = validateTypeDef(obj.types[i], `${path}.types[${i}]`);\n if (err !== null) return err;\n }\n }\n }\n if (obj.docs === undefined || obj.docs === null) {\n return `${path}.docs: required field is missing`;\n }\n {\n if (!Array.isArray(obj.docs)) {\n return `${path}.docs: expected array, got ${typeof obj.docs}`;\n }\n for (let i = 0; i < obj.docs.length; i++) {\n {\n const err = validateTopLevelDoc(obj.docs[i], `${path}.docs[${i}]`);\n if (err !== null) return err;\n }\n }\n }\n return null;\n}\n\n/**\n * LiteralValue Fully resolved literal value.\n *\n * The selected payload is determined by `kind`:\n *\n * - `string` -> `stringValue`\n * - `int` -> `intValue`\n * - `float` -> `floatValue`\n * - `bool` -> `boolValue`\n * - `object` -> `objectEntries`\n * - `array` -> `arrayItems`\n */\nexport type LiteralValue = {\n position: Position;\n kind: LiteralKind;\n stringValue?: string;\n intValue?: number;\n floatValue?: number;\n boolValue?: boolean;\n objectEntries?: ObjectEntry[];\n arrayItems?: LiteralValue[];\n};\n\nexport function hydrateLiteralValue(input: LiteralValue): LiteralValue {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedKind = input.kind;\n const hydratedStringValue = input.stringValue\n ? input.stringValue\n : input.stringValue;\n const hydratedIntValue = input.intValue ? input.intValue : input.intValue;\n const hydratedFloatValue = input.floatValue\n ? input.floatValue\n : input.floatValue;\n const hydratedBoolValue = input.boolValue ? input.boolValue : input.boolValue;\n const hydratedObjectEntries = input.objectEntries\n ? input.objectEntries.map((el) => hydrateObjectEntry(el))\n : input.objectEntries;\n const hydratedArrayItems = input.arrayItems\n ? input.arrayItems.map((el) => hydrateLiteralValue(el))\n : input.arrayItems;\n return {\n position: hydratedPosition,\n kind: hydratedKind,\n stringValue: hydratedStringValue,\n intValue: hydratedIntValue,\n floatValue: hydratedFloatValue,\n boolValue: hydratedBoolValue,\n objectEntries: hydratedObjectEntries,\n arrayItems: hydratedArrayItems,\n };\n}\n\nexport function validateLiteralValue(\n input: unknown,\n path = \"LiteralValue\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n if (obj.kind === undefined || obj.kind === null) {\n return `${path}.kind: required field is missing`;\n }\n {\n if (!isLiteralKind(obj.kind)) {\n return `${path}.kind: invalid enum value '${obj.kind}' for LiteralKind`;\n }\n }\n if (obj.objectEntries !== undefined && obj.objectEntries !== null) {\n {\n if (!Array.isArray(obj.objectEntries)) {\n return `${path}.objectEntries: expected array, got ${typeof obj.objectEntries}`;\n }\n for (let i = 0; i < obj.objectEntries.length; i++) {\n {\n const err = validateObjectEntry(\n obj.objectEntries[i],\n `${path}.objectEntries[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n }\n if (obj.arrayItems !== undefined && obj.arrayItems !== null) {\n {\n if (!Array.isArray(obj.arrayItems)) {\n return `${path}.arrayItems: expected array, got ${typeof obj.arrayItems}`;\n }\n for (let i = 0; i < obj.arrayItems.length; i++) {\n {\n const err = validateLiteralValue(\n obj.arrayItems[i],\n `${path}.arrayItems[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n }\n return null;\n}\n\n/**\n * ObjectEntry Key/value pair inside an object LiteralValue payload\n */\nexport type ObjectEntry = {\n position: Position;\n key: string;\n value: LiteralValue;\n};\n\nexport function hydrateObjectEntry(input: ObjectEntry): ObjectEntry {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedKey = input.key;\n const hydratedValue = hydrateLiteralValue(input.value);\n return {\n position: hydratedPosition,\n key: hydratedKey,\n value: hydratedValue,\n };\n}\n\nexport function validateObjectEntry(\n input: unknown,\n path = \"ObjectEntry\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n if (obj.value === undefined || obj.value === null) {\n return `${path}.value: required field is missing`;\n }\n {\n const err = validateLiteralValue(obj.value, `${path}.value`);\n if (err !== null) return err;\n }\n return null;\n}\n\n/**\n * Position It represents a position within a file and is used for error\n * reporting, diagnostics, plugins, and tooling support.\n */\nexport type Position = {\n file: string;\n line: number;\n column: number;\n};\n\nexport function hydratePosition(input: Position): Position {\n const hydratedFile = input.file;\n const hydratedLine = input.line;\n const hydratedColumn = input.column;\n return {\n file: hydratedFile,\n line: hydratedLine,\n column: hydratedColumn,\n };\n}\n\nexport function validatePosition(\n _input: unknown,\n _path = \"Position\",\n): string | null {\n return null;\n}\n\n/**\n * TopLevelDoc Standalone documentation block.\n *\n * Used for top-level docstrings that are not attached to a type/enum/constant.\n */\nexport type TopLevelDoc = {\n position: Position;\n content: string;\n};\n\nexport function hydrateTopLevelDoc(input: TopLevelDoc): TopLevelDoc {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedContent = input.content;\n return {\n position: hydratedPosition,\n content: hydratedContent,\n };\n}\n\nexport function validateTopLevelDoc(\n input: unknown,\n path = \"TopLevelDoc\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n return null;\n}\n\n/**\n * TypeDef Flattened type definition.\n *\n * All spreads are already expanded. The unified `typeRef` describes what this\n * type IS, a primitive, custom reference, map, array, or object with fields.\n */\nexport type TypeDef = {\n position: Position;\n name: string;\n doc?: string;\n annotations: Annotation[];\n typeRef: TypeRef;\n};\n\nexport function hydrateTypeDef(input: TypeDef): TypeDef {\n const hydratedPosition = hydratePosition(input.position);\n const hydratedName = input.name;\n const hydratedDoc = input.doc ? input.doc : input.doc;\n const hydratedAnnotations = input.annotations.map((el) =>\n hydrateAnnotation(el),\n );\n const hydratedTypeRef = hydrateTypeRef(input.typeRef);\n return {\n position: hydratedPosition,\n name: hydratedName,\n doc: hydratedDoc,\n annotations: hydratedAnnotations,\n typeRef: hydratedTypeRef,\n };\n}\n\nexport function validateTypeDef(\n input: unknown,\n path = \"TypeDef\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.position === undefined || obj.position === null) {\n return `${path}.position: required field is missing`;\n }\n {\n const err = validatePosition(obj.position, `${path}.position`);\n if (err !== null) return err;\n }\n if (obj.annotations === undefined || obj.annotations === null) {\n return `${path}.annotations: required field is missing`;\n }\n {\n if (!Array.isArray(obj.annotations)) {\n return `${path}.annotations: expected array, got ${typeof obj.annotations}`;\n }\n for (let i = 0; i < obj.annotations.length; i++) {\n {\n const err = validateAnnotation(\n obj.annotations[i],\n `${path}.annotations[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n if (obj.typeRef === undefined || obj.typeRef === null) {\n return `${path}.typeRef: required field is missing`;\n }\n {\n const err = validateTypeRef(obj.typeRef, `${path}.typeRef`);\n if (err !== null) return err;\n }\n return null;\n}\n\n/**\n * TypeRef Normalized type reference used by fields and constants.\n *\n * `kind` selects which payload fields are meaningful. Generators should inspect\n * `kind` first, then read the related payload fields.\n */\nexport type TypeRef = {\n kind: TypeKind;\n primitiveName?: PrimitiveType;\n typeName?: string;\n enumName?: string;\n enumType?: EnumValueType;\n arrayType?: TypeRef;\n arrayDims?: number;\n mapType?: TypeRef;\n objectFields?: Field[];\n};\n\nexport function hydrateTypeRef(input: TypeRef): TypeRef {\n const hydratedKind = input.kind;\n const hydratedPrimitiveName = input.primitiveName\n ? input.primitiveName\n : input.primitiveName;\n const hydratedTypeName = input.typeName ? input.typeName : input.typeName;\n const hydratedEnumName = input.enumName ? input.enumName : input.enumName;\n const hydratedEnumType = input.enumType ? input.enumType : input.enumType;\n const hydratedArrayType = input.arrayType\n ? hydrateTypeRef(input.arrayType)\n : input.arrayType;\n const hydratedArrayDims = input.arrayDims ? input.arrayDims : input.arrayDims;\n const hydratedMapType = input.mapType\n ? hydrateTypeRef(input.mapType)\n : input.mapType;\n const hydratedObjectFields = input.objectFields\n ? input.objectFields.map((el) => hydrateField(el))\n : input.objectFields;\n return {\n kind: hydratedKind,\n primitiveName: hydratedPrimitiveName,\n typeName: hydratedTypeName,\n enumName: hydratedEnumName,\n enumType: hydratedEnumType,\n arrayType: hydratedArrayType,\n arrayDims: hydratedArrayDims,\n mapType: hydratedMapType,\n objectFields: hydratedObjectFields,\n };\n}\n\nexport function validateTypeRef(\n input: unknown,\n path = \"TypeRef\",\n): string | null {\n if (input === null || input === undefined || typeof input !== \"object\") {\n return `${path}: expected object, got ${typeof input}`;\n }\n const obj = input as Record<string, unknown>;\n\n if (obj.kind === undefined || obj.kind === null) {\n return `${path}.kind: required field is missing`;\n }\n {\n if (!isTypeKind(obj.kind)) {\n return `${path}.kind: invalid enum value '${obj.kind}' for TypeKind`;\n }\n }\n if (obj.primitiveName !== undefined && obj.primitiveName !== null) {\n {\n if (!isPrimitiveType(obj.primitiveName)) {\n return `${path}.primitiveName: invalid enum value '${obj.primitiveName}' for PrimitiveType`;\n }\n }\n }\n if (obj.enumType !== undefined && obj.enumType !== null) {\n {\n if (!isEnumValueType(obj.enumType)) {\n return `${path}.enumType: invalid enum value '${obj.enumType}' for EnumValueType`;\n }\n }\n }\n if (obj.arrayType !== undefined && obj.arrayType !== null) {\n {\n const err = validateTypeRef(obj.arrayType, `${path}.arrayType`);\n if (err !== null) return err;\n }\n }\n if (obj.mapType !== undefined && obj.mapType !== null) {\n {\n const err = validateTypeRef(obj.mapType, `${path}.mapType`);\n if (err !== null) return err;\n }\n }\n if (obj.objectFields !== undefined && obj.objectFields !== null) {\n {\n if (!Array.isArray(obj.objectFields)) {\n return `${path}.objectFields: expected array, got ${typeof obj.objectFields}`;\n }\n for (let i = 0; i < obj.objectFields.length; i++) {\n {\n const err = validateField(\n obj.objectFields[i],\n `${path}.objectFields[${i}]`,\n );\n if (err !== null) return err;\n }\n }\n }\n }\n return null;\n}\n"],"mappings":"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"}
|