@xlr-lib/xlr-utils 0.1.1--canary.9.190
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/cjs/index.cjs +507 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/index.legacy-esm.js +456 -0
- package/dist/index.mjs +456 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +32 -0
- package/src/__tests__/__snapshots__/annotations.test.ts.snap +22 -0
- package/src/__tests__/__snapshots__/validation-helpers.test.ts.snap +53 -0
- package/src/__tests__/validation-helpers.test.ts +141 -0
- package/src/__tests__/xlr-helpers.test.ts +543 -0
- package/src/index.ts +3 -0
- package/src/type-checks.ts +130 -0
- package/src/validation-helpers.ts +246 -0
- package/src/xlr-helpers.ts +340 -0
- package/types/index.d.ts +4 -0
- package/types/type-checks.d.ts +58 -0
- package/types/validation-helpers.d.ts +41 -0
- package/types/xlr-helpers.d.ts +13 -0
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
// ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/utils/src/type-checks.ts
|
|
2
|
+
function isGenericNodeType(nt) {
|
|
3
|
+
return nt.genericTokens?.length > 0;
|
|
4
|
+
}
|
|
5
|
+
function isGenericNamedType(nt) {
|
|
6
|
+
return nt.genericTokens?.length > 0;
|
|
7
|
+
}
|
|
8
|
+
function isPrimitiveTypeNode(node) {
|
|
9
|
+
return node.type === "string" || node.type === "number" || node.type === "boolean" || node.type === "null" || node.type === "any" || node.type === "never" || node.type === "undefined" || node.type === "unknown" || node.type === "void";
|
|
10
|
+
}
|
|
11
|
+
function isNonNullable(a) {
|
|
12
|
+
return a !== null || a !== void 0;
|
|
13
|
+
}
|
|
14
|
+
function isStringType(node) {
|
|
15
|
+
return node.type === "string";
|
|
16
|
+
}
|
|
17
|
+
function isNumberType(node) {
|
|
18
|
+
return node.type === "number";
|
|
19
|
+
}
|
|
20
|
+
function isBooleanType(node) {
|
|
21
|
+
return node.type === "boolean";
|
|
22
|
+
}
|
|
23
|
+
function isObjectType(node) {
|
|
24
|
+
return node.type === "object";
|
|
25
|
+
}
|
|
26
|
+
function isArrayType(node) {
|
|
27
|
+
return node.type === "array";
|
|
28
|
+
}
|
|
29
|
+
function isRefType(node) {
|
|
30
|
+
return node.type === "ref";
|
|
31
|
+
}
|
|
32
|
+
function isOrType(node) {
|
|
33
|
+
return node.type === "or";
|
|
34
|
+
}
|
|
35
|
+
function isAndType(node) {
|
|
36
|
+
return node.type === "and";
|
|
37
|
+
}
|
|
38
|
+
function isRecordType(node) {
|
|
39
|
+
return node.type === "record";
|
|
40
|
+
}
|
|
41
|
+
function isNamedType(node) {
|
|
42
|
+
return "name" in node && "source" in node && typeof node.name === "string";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/utils/src/validation-helpers.ts
|
|
46
|
+
function propertyToTuple(node) {
|
|
47
|
+
return {
|
|
48
|
+
key: node.children?.[0].value,
|
|
49
|
+
value: node.children?.[1]
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function makePropertyMap(node) {
|
|
53
|
+
const m = /* @__PURE__ */ new Map();
|
|
54
|
+
node.children?.forEach((child) => {
|
|
55
|
+
const property = propertyToTuple(child);
|
|
56
|
+
m.set(property.key, property.value);
|
|
57
|
+
});
|
|
58
|
+
return m;
|
|
59
|
+
}
|
|
60
|
+
function isNode(obj) {
|
|
61
|
+
return typeof obj !== "string" || typeof obj !== "number" || typeof obj !== "boolean";
|
|
62
|
+
}
|
|
63
|
+
function computeExtends(a, b) {
|
|
64
|
+
if ((a.type === "any" || a.type === "unknown") && (b.type === "any" || b.type === "unknown")) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
if ((a.type === "null" || a.type === "undefined") && (b.type === "null" || b.type === "undefined")) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (a.type === b.type) {
|
|
71
|
+
if (isPrimitiveTypeNode(a) && isPrimitiveTypeNode(b)) {
|
|
72
|
+
if (a.const && b.const) {
|
|
73
|
+
if (a.const === b.const) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (a.type === "ref" && b.type === "ref") {
|
|
81
|
+
return a.ref === b.ref;
|
|
82
|
+
}
|
|
83
|
+
if (a.type === "object" && b.type === "object") {
|
|
84
|
+
for (const property in b.properties) {
|
|
85
|
+
const propertyNode = b.properties[property];
|
|
86
|
+
if (!a.properties[property] || !computeExtends(a.properties[property].node, propertyNode.node)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (isPrimitiveTypeNode(a) && b.type === "or") {
|
|
94
|
+
return b.or.every((member) => computeExtends(a, member));
|
|
95
|
+
}
|
|
96
|
+
if (isPrimitiveTypeNode(b) && a.type === "or") {
|
|
97
|
+
return a.or.every((member) => computeExtends(b, member));
|
|
98
|
+
}
|
|
99
|
+
if (a.type === "or" && b.type === "or") {
|
|
100
|
+
return a.or.every((x) => b.or.some((y) => computeExtends(x, y)));
|
|
101
|
+
}
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
function resolveConditional(conditional) {
|
|
105
|
+
const { left, right } = conditional.check;
|
|
106
|
+
const conditionalResult = computeExtends(left, right) ? conditional.value.true : conditional.value.false;
|
|
107
|
+
if (isGenericNodeType(conditional)) {
|
|
108
|
+
const genericMap = /* @__PURE__ */ new Map();
|
|
109
|
+
conditional.genericTokens.forEach((token) => {
|
|
110
|
+
genericMap.set(
|
|
111
|
+
token.symbol,
|
|
112
|
+
token.default ?? token.constraints ?? { type: "any" }
|
|
113
|
+
);
|
|
114
|
+
});
|
|
115
|
+
return fillInGenerics(conditionalResult, genericMap);
|
|
116
|
+
}
|
|
117
|
+
return conditionalResult;
|
|
118
|
+
}
|
|
119
|
+
function resolveReferenceNode(genericReference, typeToFill) {
|
|
120
|
+
const genericArgs = genericReference.genericArguments;
|
|
121
|
+
const genericMap = /* @__PURE__ */ new Map();
|
|
122
|
+
if (genericArgs && isGenericNodeType(typeToFill)) {
|
|
123
|
+
typeToFill.genericTokens.forEach((token, index) => {
|
|
124
|
+
genericMap.set(
|
|
125
|
+
token.symbol,
|
|
126
|
+
genericArgs[index] ?? token.default ?? token.constraints
|
|
127
|
+
);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const filledInNode = fillInGenerics(typeToFill, genericMap);
|
|
131
|
+
if (isGenericNodeType(filledInNode) && genericArgs?.length) {
|
|
132
|
+
if (genericArgs.length < filledInNode.genericTokens.length) {
|
|
133
|
+
filledInNode.genericTokens = filledInNode.genericTokens.slice(
|
|
134
|
+
genericArgs?.length
|
|
135
|
+
);
|
|
136
|
+
} else if (genericArgs.length === filledInNode.genericTokens.length) {
|
|
137
|
+
filledInNode.genericTokens = [];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (genericReference.property && filledInNode.type === "object") {
|
|
141
|
+
return filledInNode.properties[genericReference.property]?.node ?? filledInNode.additionalProperties ?? { type: "undefined" };
|
|
142
|
+
}
|
|
143
|
+
return filledInNode;
|
|
144
|
+
}
|
|
145
|
+
function computeEffectiveObject(base, operand, errorOnOverlap = true) {
|
|
146
|
+
const baseObjectName = base.name ?? base.title ?? "object literal";
|
|
147
|
+
const operandObjectName = operand.name ?? operand.title ?? "object literal";
|
|
148
|
+
const newObject = {
|
|
149
|
+
...JSON.parse(JSON.stringify(base)),
|
|
150
|
+
name: `${baseObjectName} & ${operandObjectName}`,
|
|
151
|
+
description: `Effective type combining ${baseObjectName} and ${operandObjectName}`,
|
|
152
|
+
genericTokens: [
|
|
153
|
+
...isGenericNodeType(base) ? base.genericTokens : [],
|
|
154
|
+
...isGenericNodeType(operand) ? operand.genericTokens : []
|
|
155
|
+
]
|
|
156
|
+
};
|
|
157
|
+
for (const property in operand.properties) {
|
|
158
|
+
if (newObject.properties[property] !== void 0 && errorOnOverlap) {
|
|
159
|
+
if (!computeExtends(
|
|
160
|
+
newObject.properties[property].node,
|
|
161
|
+
operand.properties[property].node
|
|
162
|
+
)) {
|
|
163
|
+
throw new Error(
|
|
164
|
+
`Can't compute effective type for ${baseObjectName} and ${operandObjectName} because of conflicting properties ${property}`
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
newObject.properties[property] = operand.properties[property];
|
|
169
|
+
}
|
|
170
|
+
if (newObject.additionalProperties && operand.additionalProperties) {
|
|
171
|
+
if (!isPrimitiveTypeNode(newObject.additionalProperties) || !isPrimitiveTypeNode(operand.additionalProperties) || newObject.additionalProperties.type !== operand.additionalProperties.type) {
|
|
172
|
+
newObject.additionalProperties = {
|
|
173
|
+
type: "and",
|
|
174
|
+
and: [newObject.additionalProperties, operand.additionalProperties]
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
} else if (operand.additionalProperties) {
|
|
178
|
+
newObject.additionalProperties = operand.additionalProperties;
|
|
179
|
+
}
|
|
180
|
+
return newObject;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/utils/src/xlr-helpers.ts
|
|
184
|
+
function fillInGenerics(xlrNode, generics, preferLocalGenerics = false) {
|
|
185
|
+
let localGenerics;
|
|
186
|
+
if (generics) {
|
|
187
|
+
localGenerics = new Map(generics);
|
|
188
|
+
if (preferLocalGenerics && isGenericNodeType(xlrNode)) {
|
|
189
|
+
xlrNode.genericTokens?.forEach((token) => {
|
|
190
|
+
const genericValue = token.default ?? token.constraints;
|
|
191
|
+
localGenerics.set(
|
|
192
|
+
token.symbol,
|
|
193
|
+
fillInGenerics(genericValue, localGenerics, preferLocalGenerics)
|
|
194
|
+
);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
} else {
|
|
198
|
+
localGenerics = /* @__PURE__ */ new Map();
|
|
199
|
+
if (isGenericNodeType(xlrNode)) {
|
|
200
|
+
xlrNode.genericTokens?.forEach((token) => {
|
|
201
|
+
const genericValue = token.default ?? token.constraints;
|
|
202
|
+
localGenerics.set(
|
|
203
|
+
token.symbol,
|
|
204
|
+
fillInGenerics(genericValue, localGenerics, preferLocalGenerics)
|
|
205
|
+
);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (xlrNode.type === "ref") {
|
|
210
|
+
if (localGenerics.has(xlrNode.ref)) {
|
|
211
|
+
return {
|
|
212
|
+
...localGenerics.get(xlrNode.ref),
|
|
213
|
+
...xlrNode.genericArguments ? {
|
|
214
|
+
genericArguments: xlrNode.genericArguments.map(
|
|
215
|
+
(ga) => fillInGenerics(ga, localGenerics, preferLocalGenerics)
|
|
216
|
+
)
|
|
217
|
+
} : {},
|
|
218
|
+
...xlrNode.title ? { title: xlrNode.title } : {},
|
|
219
|
+
...xlrNode.name ? { name: xlrNode.name } : {},
|
|
220
|
+
...xlrNode.description ? { description: xlrNode.description } : {},
|
|
221
|
+
...xlrNode.comment ? { comment: xlrNode.comment } : {}
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
...xlrNode,
|
|
226
|
+
...xlrNode.genericArguments ? {
|
|
227
|
+
genericArguments: xlrNode.genericArguments.map(
|
|
228
|
+
(ga) => fillInGenerics(ga, localGenerics, preferLocalGenerics)
|
|
229
|
+
)
|
|
230
|
+
} : {}
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
if (xlrNode.type === "object") {
|
|
234
|
+
const newProperties = {};
|
|
235
|
+
Object.getOwnPropertyNames(xlrNode.properties).forEach((propName) => {
|
|
236
|
+
const prop = xlrNode.properties[propName];
|
|
237
|
+
newProperties[propName] = {
|
|
238
|
+
required: prop.required,
|
|
239
|
+
node: fillInGenerics(prop.node, localGenerics, preferLocalGenerics)
|
|
240
|
+
};
|
|
241
|
+
});
|
|
242
|
+
return {
|
|
243
|
+
...xlrNode,
|
|
244
|
+
properties: newProperties,
|
|
245
|
+
...isGenericNamedType(xlrNode) ? {
|
|
246
|
+
genericTokens: xlrNode.genericTokens.map((token) => {
|
|
247
|
+
return {
|
|
248
|
+
...token,
|
|
249
|
+
constraints: token.constraints ? fillInGenerics(
|
|
250
|
+
token.constraints,
|
|
251
|
+
localGenerics,
|
|
252
|
+
preferLocalGenerics
|
|
253
|
+
) : void 0,
|
|
254
|
+
default: token.default ? fillInGenerics(
|
|
255
|
+
token.default,
|
|
256
|
+
localGenerics,
|
|
257
|
+
preferLocalGenerics
|
|
258
|
+
) : void 0
|
|
259
|
+
};
|
|
260
|
+
})
|
|
261
|
+
} : {},
|
|
262
|
+
extends: xlrNode.extends ? fillInGenerics(
|
|
263
|
+
xlrNode.extends,
|
|
264
|
+
localGenerics,
|
|
265
|
+
preferLocalGenerics
|
|
266
|
+
) : void 0,
|
|
267
|
+
additionalProperties: xlrNode.additionalProperties ? fillInGenerics(
|
|
268
|
+
xlrNode.additionalProperties,
|
|
269
|
+
localGenerics,
|
|
270
|
+
preferLocalGenerics
|
|
271
|
+
) : false
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
if (xlrNode.type === "array") {
|
|
275
|
+
return {
|
|
276
|
+
...xlrNode,
|
|
277
|
+
elementType: fillInGenerics(
|
|
278
|
+
xlrNode.elementType,
|
|
279
|
+
localGenerics,
|
|
280
|
+
preferLocalGenerics
|
|
281
|
+
)
|
|
282
|
+
};
|
|
283
|
+
} else if (xlrNode.type === "or" || xlrNode.type === "and") {
|
|
284
|
+
let pointer;
|
|
285
|
+
if (xlrNode.type === "or") {
|
|
286
|
+
pointer = xlrNode.or;
|
|
287
|
+
} else {
|
|
288
|
+
pointer = xlrNode.and;
|
|
289
|
+
}
|
|
290
|
+
return {
|
|
291
|
+
...xlrNode,
|
|
292
|
+
[xlrNode.type]: pointer.map((prop) => {
|
|
293
|
+
return fillInGenerics(prop, localGenerics, preferLocalGenerics);
|
|
294
|
+
})
|
|
295
|
+
};
|
|
296
|
+
} else if (xlrNode.type === "record") {
|
|
297
|
+
return {
|
|
298
|
+
...xlrNode,
|
|
299
|
+
keyType: fillInGenerics(
|
|
300
|
+
xlrNode.keyType,
|
|
301
|
+
localGenerics,
|
|
302
|
+
preferLocalGenerics
|
|
303
|
+
),
|
|
304
|
+
valueType: fillInGenerics(
|
|
305
|
+
xlrNode.valueType,
|
|
306
|
+
localGenerics,
|
|
307
|
+
preferLocalGenerics
|
|
308
|
+
)
|
|
309
|
+
};
|
|
310
|
+
} else if (xlrNode.type === "conditional") {
|
|
311
|
+
const filledInConditional = {
|
|
312
|
+
...xlrNode,
|
|
313
|
+
check: {
|
|
314
|
+
left: fillInGenerics(
|
|
315
|
+
xlrNode.check.left,
|
|
316
|
+
localGenerics,
|
|
317
|
+
preferLocalGenerics
|
|
318
|
+
),
|
|
319
|
+
right: fillInGenerics(
|
|
320
|
+
xlrNode.check.right,
|
|
321
|
+
localGenerics,
|
|
322
|
+
preferLocalGenerics
|
|
323
|
+
)
|
|
324
|
+
},
|
|
325
|
+
value: {
|
|
326
|
+
true: fillInGenerics(
|
|
327
|
+
xlrNode.value.true,
|
|
328
|
+
localGenerics,
|
|
329
|
+
preferLocalGenerics
|
|
330
|
+
),
|
|
331
|
+
false: fillInGenerics(
|
|
332
|
+
xlrNode.value.false,
|
|
333
|
+
localGenerics,
|
|
334
|
+
preferLocalGenerics
|
|
335
|
+
)
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
if (filledInConditional.check.left.type !== "ref" && filledInConditional.check.right.type !== "ref") {
|
|
339
|
+
return {
|
|
340
|
+
name: xlrNode.name,
|
|
341
|
+
title: xlrNode.title,
|
|
342
|
+
...resolveConditional(filledInConditional)
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
return filledInConditional;
|
|
346
|
+
}
|
|
347
|
+
return xlrNode;
|
|
348
|
+
}
|
|
349
|
+
function applyPickOrOmitToNodeType(baseObject, operation, properties) {
|
|
350
|
+
if (baseObject.type === "object") {
|
|
351
|
+
const newObject = { ...baseObject };
|
|
352
|
+
Object.keys(baseObject.properties).forEach((key) => {
|
|
353
|
+
if (operation === "Omit" && properties.has(key) || operation === "Pick" && !properties.has(key)) {
|
|
354
|
+
delete newObject.properties[key];
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
if (Object.keys(newObject.properties).length === 0 && (operation !== "Omit" || newObject.additionalProperties === false)) {
|
|
358
|
+
return void 0;
|
|
359
|
+
}
|
|
360
|
+
return newObject;
|
|
361
|
+
}
|
|
362
|
+
let pointer;
|
|
363
|
+
if (baseObject.type === "and") {
|
|
364
|
+
pointer = baseObject.and;
|
|
365
|
+
} else if (baseObject.type === "or") {
|
|
366
|
+
pointer = baseObject.or;
|
|
367
|
+
} else {
|
|
368
|
+
throw new Error(
|
|
369
|
+
`Error: Can not apply ${operation} to type ${baseObject.type}`
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
const pickedTypes = pointer.map((type) => {
|
|
373
|
+
const node = applyPickOrOmitToNodeType(type, operation, properties);
|
|
374
|
+
if (node === void 0) {
|
|
375
|
+
return void 0;
|
|
376
|
+
}
|
|
377
|
+
return { ...node, additionalProperties: false };
|
|
378
|
+
}).filter((type) => type !== void 0);
|
|
379
|
+
if (pickedTypes.length === 0) {
|
|
380
|
+
return void 0;
|
|
381
|
+
}
|
|
382
|
+
if (pickedTypes.length === 1) {
|
|
383
|
+
return pickedTypes[0];
|
|
384
|
+
}
|
|
385
|
+
if (baseObject.type === "and") {
|
|
386
|
+
return { ...baseObject, and: pickedTypes };
|
|
387
|
+
}
|
|
388
|
+
return { ...baseObject, or: pickedTypes };
|
|
389
|
+
}
|
|
390
|
+
function applyPartialOrRequiredToNodeType(baseObject, modifier) {
|
|
391
|
+
if (baseObject.type === "object") {
|
|
392
|
+
const newObject = { ...baseObject };
|
|
393
|
+
Object.keys(baseObject.properties).forEach((key) => {
|
|
394
|
+
newObject.properties[key].required = modifier;
|
|
395
|
+
});
|
|
396
|
+
return newObject;
|
|
397
|
+
}
|
|
398
|
+
if (baseObject.type === "and") {
|
|
399
|
+
const pickedTypes = baseObject.and.map(
|
|
400
|
+
(type) => applyPartialOrRequiredToNodeType(type, modifier)
|
|
401
|
+
);
|
|
402
|
+
return { ...baseObject, and: pickedTypes };
|
|
403
|
+
}
|
|
404
|
+
if (baseObject.type === "or") {
|
|
405
|
+
const pickedTypes = baseObject.or.map(
|
|
406
|
+
(type) => applyPartialOrRequiredToNodeType(type, modifier)
|
|
407
|
+
);
|
|
408
|
+
return { ...baseObject, or: pickedTypes };
|
|
409
|
+
}
|
|
410
|
+
throw new Error(
|
|
411
|
+
`Error: Can not apply ${modifier ? "Required" : "Partial"} to type ${baseObject.type}`
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
function applyExcludeToNodeType(baseObject, filters) {
|
|
415
|
+
const remainingMembers = baseObject.or.filter((type) => {
|
|
416
|
+
if (filters.type === "or") {
|
|
417
|
+
return !filters.or.some((filter) => computeExtends(type, filter));
|
|
418
|
+
}
|
|
419
|
+
return !computeExtends(type, filters);
|
|
420
|
+
});
|
|
421
|
+
if (remainingMembers.length === 1) {
|
|
422
|
+
return remainingMembers[0];
|
|
423
|
+
}
|
|
424
|
+
return {
|
|
425
|
+
...baseObject,
|
|
426
|
+
or: remainingMembers
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
export {
|
|
430
|
+
applyExcludeToNodeType,
|
|
431
|
+
applyPartialOrRequiredToNodeType,
|
|
432
|
+
applyPickOrOmitToNodeType,
|
|
433
|
+
computeEffectiveObject,
|
|
434
|
+
computeExtends,
|
|
435
|
+
fillInGenerics,
|
|
436
|
+
isAndType,
|
|
437
|
+
isArrayType,
|
|
438
|
+
isBooleanType,
|
|
439
|
+
isGenericNamedType,
|
|
440
|
+
isGenericNodeType,
|
|
441
|
+
isNamedType,
|
|
442
|
+
isNode,
|
|
443
|
+
isNonNullable,
|
|
444
|
+
isNumberType,
|
|
445
|
+
isObjectType,
|
|
446
|
+
isOrType,
|
|
447
|
+
isPrimitiveTypeNode,
|
|
448
|
+
isRecordType,
|
|
449
|
+
isRefType,
|
|
450
|
+
isStringType,
|
|
451
|
+
makePropertyMap,
|
|
452
|
+
propertyToTuple,
|
|
453
|
+
resolveConditional,
|
|
454
|
+
resolveReferenceNode
|
|
455
|
+
};
|
|
456
|
+
//# sourceMappingURL=index.mjs.map
|