ajsc 5.2.4 → 7.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/README.md +253 -145
- package/dist/converter/BaseConverter.d.ts +283 -0
- package/dist/converter/BaseConverter.js +131 -0
- package/dist/converter/BaseConverter.js.map +1 -0
- package/dist/converter/Emitter.d.ts +35 -0
- package/dist/converter/Emitter.js +50 -0
- package/dist/converter/Emitter.js.map +1 -0
- package/dist/converter/discriminatedUnions.d.ts +47 -0
- package/dist/converter/discriminatedUnions.js +168 -0
- package/dist/converter/discriminatedUnions.js.map +1 -0
- package/dist/converter/formatDefault.d.ts +20 -0
- package/dist/converter/formatDefault.js +31 -0
- package/dist/converter/formatDefault.js.map +1 -0
- package/dist/converter/index.d.ts +2 -0
- package/dist/converter/index.js +2 -0
- package/dist/converter/index.js.map +1 -0
- package/dist/converter/mergeUnions.d.ts +36 -0
- package/dist/converter/mergeUnions.js +189 -0
- package/dist/converter/mergeUnions.js.map +1 -0
- package/dist/converter/naming.d.ts +29 -0
- package/dist/converter/naming.js +130 -0
- package/dist/converter/naming.js.map +1 -0
- package/dist/converter/registry.d.ts +18 -0
- package/dist/converter/registry.js +50 -0
- package/dist/converter/registry.js.map +1 -0
- package/dist/converter/walk.d.ts +9 -0
- package/dist/converter/walk.js +40 -0
- package/dist/converter/walk.js.map +1 -0
- package/dist/index.d.ts +71 -3
- package/dist/index.js +63 -3
- package/dist/index.js.map +1 -1
- package/dist/{JSONSchemaConverter.d.ts → ir/JSONSchemaConverter.d.ts} +1 -1
- package/dist/{JSONSchemaConverter.js → ir/JSONSchemaConverter.js} +9 -3
- package/dist/ir/JSONSchemaConverter.js.map +1 -0
- package/dist/ir/index.d.ts +1 -0
- package/dist/ir/index.js +2 -0
- package/dist/ir/index.js.map +1 -0
- package/dist/kotlin/KotlinBaseConverter.d.ts +18 -0
- package/dist/kotlin/KotlinBaseConverter.js +36 -0
- package/dist/kotlin/KotlinBaseConverter.js.map +1 -0
- package/dist/kotlin/KotlinConverter.d.ts +67 -0
- package/dist/kotlin/KotlinConverter.js +140 -0
- package/dist/kotlin/KotlinConverter.js.map +1 -0
- package/dist/kotlin/annotations.d.ts +26 -0
- package/dist/kotlin/annotations.js +35 -0
- package/dist/kotlin/annotations.js.map +1 -0
- package/dist/kotlin/enums.d.ts +15 -0
- package/dist/kotlin/enums.js +58 -0
- package/dist/kotlin/enums.js.map +1 -0
- package/dist/kotlin/index.d.ts +2 -0
- package/dist/kotlin/index.js +3 -0
- package/dist/kotlin/index.js.map +1 -0
- package/dist/kotlin/objectEmitter.d.ts +12 -0
- package/dist/kotlin/objectEmitter.js +74 -0
- package/dist/kotlin/objectEmitter.js.map +1 -0
- package/dist/kotlin/sealedUnion.d.ts +17 -0
- package/dist/kotlin/sealedUnion.js +74 -0
- package/dist/kotlin/sealedUnion.js.map +1 -0
- package/dist/kotlin/typeMapper.d.ts +17 -0
- package/dist/kotlin/typeMapper.js +107 -0
- package/dist/kotlin/typeMapper.js.map +1 -0
- package/dist/kotlin/unsupported.d.ts +13 -0
- package/dist/kotlin/unsupported.js +53 -0
- package/dist/kotlin/unsupported.js.map +1 -0
- package/dist/swift/SwiftBaseConverter.d.ts +18 -0
- package/dist/swift/SwiftBaseConverter.js +38 -0
- package/dist/swift/SwiftBaseConverter.js.map +1 -0
- package/dist/swift/SwiftConverter.d.ts +60 -0
- package/dist/swift/SwiftConverter.js +111 -0
- package/dist/swift/SwiftConverter.js.map +1 -0
- package/dist/swift/discriminatedEnum.d.ts +18 -0
- package/dist/swift/discriminatedEnum.js +99 -0
- package/dist/swift/discriminatedEnum.js.map +1 -0
- package/dist/swift/enums.d.ts +15 -0
- package/dist/swift/enums.js +62 -0
- package/dist/swift/enums.js.map +1 -0
- package/dist/swift/index.d.ts +2 -0
- package/dist/swift/index.js +3 -0
- package/dist/swift/index.js.map +1 -0
- package/dist/swift/structEmitter.d.ts +12 -0
- package/dist/swift/structEmitter.js +70 -0
- package/dist/swift/structEmitter.js.map +1 -0
- package/dist/swift/typeMapper.d.ts +18 -0
- package/dist/swift/typeMapper.js +106 -0
- package/dist/swift/typeMapper.js.map +1 -0
- package/dist/swift/unsupported.d.ts +19 -0
- package/dist/swift/unsupported.js +88 -0
- package/dist/swift/unsupported.js.map +1 -0
- package/dist/typescript/TypescriptBaseConverter.d.ts +25 -0
- package/dist/typescript/TypescriptBaseConverter.js +178 -0
- package/dist/typescript/TypescriptBaseConverter.js.map +1 -0
- package/dist/typescript/TypescriptConverter.d.ts +74 -0
- package/dist/typescript/TypescriptConverter.js +252 -0
- package/dist/typescript/TypescriptConverter.js.map +1 -0
- package/dist/typescript/index.d.ts +2 -0
- package/dist/typescript/index.js +3 -0
- package/dist/typescript/index.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +37 -5
- package/dist/JSONSchemaConverter.js.map +0 -1
- package/dist/JSONSchemaConverter.test.d.ts +0 -1
- package/dist/JSONSchemaConverter.test.js +0 -585
- package/dist/JSONSchemaConverter.test.js.map +0 -1
- package/dist/Typebox.test.d.ts +0 -1
- package/dist/Typebox.test.js +0 -88
- package/dist/Typebox.test.js.map +0 -1
- package/dist/TypescriptBaseConverter.d.ts +0 -75
- package/dist/TypescriptBaseConverter.js +0 -321
- package/dist/TypescriptBaseConverter.js.map +0 -1
- package/dist/TypescriptConverter.additionalProperties.test.d.ts +0 -1
- package/dist/TypescriptConverter.additionalProperties.test.js +0 -110
- package/dist/TypescriptConverter.additionalProperties.test.js.map +0 -1
- package/dist/TypescriptConverter.arrays.test.d.ts +0 -1
- package/dist/TypescriptConverter.arrays.test.js +0 -130
- package/dist/TypescriptConverter.arrays.test.js.map +0 -1
- package/dist/TypescriptConverter.composites.advanced.test.d.ts +0 -1
- package/dist/TypescriptConverter.composites.advanced.test.js +0 -1070
- package/dist/TypescriptConverter.composites.advanced.test.js.map +0 -1
- package/dist/TypescriptConverter.composites.test.d.ts +0 -1
- package/dist/TypescriptConverter.composites.test.js +0 -335
- package/dist/TypescriptConverter.composites.test.js.map +0 -1
- package/dist/TypescriptConverter.d.ts +0 -163
- package/dist/TypescriptConverter.js +0 -606
- package/dist/TypescriptConverter.js.map +0 -1
- package/dist/TypescriptConverter.jsdoc.test.d.ts +0 -1
- package/dist/TypescriptConverter.jsdoc.test.js +0 -194
- package/dist/TypescriptConverter.jsdoc.test.js.map +0 -1
- package/dist/TypescriptConverter.objects.test.d.ts +0 -1
- package/dist/TypescriptConverter.objects.test.js +0 -258
- package/dist/TypescriptConverter.objects.test.js.map +0 -1
- package/dist/TypescriptConverter.options.test.d.ts +0 -1
- package/dist/TypescriptConverter.options.test.js +0 -501
- package/dist/TypescriptConverter.options.test.js.map +0 -1
- package/dist/TypescriptConverter.primitives.test.d.ts +0 -1
- package/dist/TypescriptConverter.primitives.test.js +0 -26
- package/dist/TypescriptConverter.primitives.test.js.map +0 -1
- package/dist/utils/path-utils.test.d.ts +0 -1
- package/dist/utils/path-utils.test.js +0 -92
- package/dist/utils/path-utils.test.js.map +0 -1
|
@@ -1,606 +0,0 @@
|
|
|
1
|
-
import { TypescriptBaseConverter, } from "./TypescriptBaseConverter.js";
|
|
2
|
-
import { JSONSchemaConverter } from "./JSONSchemaConverter.js";
|
|
3
|
-
import { toPascalCase } from "./utils/to-pascal-case.js";
|
|
4
|
-
import { PathUtils } from "./utils/path-utils.js";
|
|
5
|
-
/**
|
|
6
|
-
* Recursively walks an IR tree, visiting each node and optionally replacing it.
|
|
7
|
-
* Returns the (potentially replaced) root node.
|
|
8
|
-
*
|
|
9
|
-
* @param visitor Return an IRNode to replace the current node, or void/null to keep it.
|
|
10
|
-
* @param order 'pre' visits before children; 'post' (default) visits after children.
|
|
11
|
-
*/
|
|
12
|
-
function walkIR(ir, visitor, order = "post") {
|
|
13
|
-
let node = ir;
|
|
14
|
-
if (order === "pre") {
|
|
15
|
-
const result = visitor(node);
|
|
16
|
-
if (result != null)
|
|
17
|
-
node = result;
|
|
18
|
-
}
|
|
19
|
-
if (node.properties) {
|
|
20
|
-
for (const key of Object.keys(node.properties)) {
|
|
21
|
-
node.properties[key] = walkIR(node.properties[key], visitor, order);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
if (node.items) {
|
|
25
|
-
node.items = walkIR(node.items, visitor, order);
|
|
26
|
-
}
|
|
27
|
-
if (node.tupleItems) {
|
|
28
|
-
node.tupleItems = node.tupleItems.map((t) => walkIR(t, visitor, order));
|
|
29
|
-
}
|
|
30
|
-
if (node.options) {
|
|
31
|
-
node.options = node.options.map((o) => walkIR(o, visitor, order));
|
|
32
|
-
}
|
|
33
|
-
if (node.additionalProperties &&
|
|
34
|
-
typeof node.additionalProperties !== "boolean") {
|
|
35
|
-
node.additionalProperties = walkIR(node.additionalProperties, visitor, order);
|
|
36
|
-
}
|
|
37
|
-
if (order === "post") {
|
|
38
|
-
const result = visitor(node);
|
|
39
|
-
if (result != null)
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
return node;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* A TypeScript language converter plugin.
|
|
46
|
-
*/
|
|
47
|
-
export class TypescriptConverter extends TypescriptBaseConverter {
|
|
48
|
-
constructor(schema, opts) {
|
|
49
|
-
super();
|
|
50
|
-
this.language = "typescript";
|
|
51
|
-
/**
|
|
52
|
-
* Stores enum declarations keyed by canonical signature (sorted JSON values)
|
|
53
|
-
* for deduplication across the schema.
|
|
54
|
-
*/
|
|
55
|
-
this.enumDeclarations = new Map();
|
|
56
|
-
this.mergeCounter = 0;
|
|
57
|
-
/**
|
|
58
|
-
* Maps discriminator literal IR nodes to their consolidated enum info.
|
|
59
|
-
* Used by generateLiteralType and preRegisterEnumNames to emit a single
|
|
60
|
-
* consolidated enum and member references instead of single-value enums.
|
|
61
|
-
*/
|
|
62
|
-
this.discriminatorInfo = new Map();
|
|
63
|
-
/** Maps variant IR nodes to their enhancement-assigned names. */
|
|
64
|
-
this.variantNames = new Map();
|
|
65
|
-
/** Signatures eligible for cross-variant deduplication. */
|
|
66
|
-
this.dedupSignatures = new Set();
|
|
67
|
-
this.opts = opts;
|
|
68
|
-
this.inlineTypes = opts?.inlineTypes ?? false;
|
|
69
|
-
this.enumStyle = opts?.enumStyle ?? "union";
|
|
70
|
-
this.emitJSDoc = !this.inlineTypes && (opts?.jsdoc ?? false);
|
|
71
|
-
this.schemaConverter = new JSONSchemaConverter(schema);
|
|
72
|
-
// Merge compatible anyOf unions into single object types before
|
|
73
|
-
// enum pre-registration and type generation, so the downstream
|
|
74
|
-
// pipeline sees merged enums and objects rather than separate variants.
|
|
75
|
-
const irNode = this.mergeCompatibleUnions(this.schemaConverter.irNode);
|
|
76
|
-
this.enhanceDiscriminatedUnions(irNode);
|
|
77
|
-
if (!irNode.name) {
|
|
78
|
-
irNode.name = "Root";
|
|
79
|
-
}
|
|
80
|
-
// Reserve the root type name so enums/ref types don't collide with it
|
|
81
|
-
this.rootName = irNode.name;
|
|
82
|
-
this.usedDeclarationNames.add(this.rootName);
|
|
83
|
-
// Pre-register enum names before type generation so that enum names
|
|
84
|
-
// (derived from meaningful property names) take precedence over
|
|
85
|
-
// synthetic ref type names (derived from postfix fallbacks).
|
|
86
|
-
if (this.enumStyle === "enum" && !this.inlineTypes) {
|
|
87
|
-
this.preRegisterEnumNames(irNode);
|
|
88
|
-
}
|
|
89
|
-
const code = this.generateType(irNode, {
|
|
90
|
-
getReferencedType: this.inlineTypes
|
|
91
|
-
? () => undefined
|
|
92
|
-
: this.getReferencedType.bind(this),
|
|
93
|
-
});
|
|
94
|
-
const rootName = irNode.name;
|
|
95
|
-
if (!this.inlineTypes) {
|
|
96
|
-
const enumCode = [...this.enumDeclarations.values()]
|
|
97
|
-
.map(({ name, members, description }) => {
|
|
98
|
-
const jsdoc = this.emitJSDoc && description
|
|
99
|
-
? `${this.formatJSDoc(description)}\n`
|
|
100
|
-
: "";
|
|
101
|
-
const body = members
|
|
102
|
-
.map(({ key, value }) => `${key} = ${JSON.stringify(value)}`)
|
|
103
|
-
.join(", ");
|
|
104
|
-
return `${jsdoc}export enum ${name} { ${body} }`;
|
|
105
|
-
})
|
|
106
|
-
.join("\n");
|
|
107
|
-
const typeCode = this.refTypes
|
|
108
|
-
.map(([_sig, name, { code, description }]) => {
|
|
109
|
-
const jsdoc = this.emitJSDoc && description
|
|
110
|
-
? `${this.formatJSDoc(description)}\n`
|
|
111
|
-
: "";
|
|
112
|
-
return `${jsdoc}export type ${name} = ${code};`;
|
|
113
|
-
})
|
|
114
|
-
.join("\n");
|
|
115
|
-
const allDecls = [enumCode, typeCode].filter(Boolean).join("\n");
|
|
116
|
-
const rootJsdoc = this.emitJSDoc && irNode.description
|
|
117
|
-
? `${this.formatJSDoc(irNode.description)}\n`
|
|
118
|
-
: "";
|
|
119
|
-
this.code = `${allDecls}\n\n${rootJsdoc}export type ${rootName} = ${code};\n`;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
this.code = `${code}`;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
getRefTypeNamingConfig() {
|
|
126
|
-
const base = super.getRefTypeNamingConfig();
|
|
127
|
-
return {
|
|
128
|
-
...base,
|
|
129
|
-
...(this.opts?.arrayItemNaming !== undefined && {
|
|
130
|
-
arrayItemNaming: this.opts.arrayItemNaming,
|
|
131
|
-
}),
|
|
132
|
-
...(this.opts?.depluralize !== undefined && {
|
|
133
|
-
depluralize: this.opts.depluralize,
|
|
134
|
-
}),
|
|
135
|
-
...(this.opts?.uncountableWords !== undefined && {
|
|
136
|
-
uncountableWords: this.opts.uncountableWords,
|
|
137
|
-
}),
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Pre-scans the IR tree to discover and register all enum declarations
|
|
142
|
-
* before type generation begins. Traversal order mirrors generateType's
|
|
143
|
-
* DFS order so that canonical-key deduplication picks the same "first"
|
|
144
|
-
* path that runtime generation would encounter.
|
|
145
|
-
*/
|
|
146
|
-
preRegisterEnumNames(ir) {
|
|
147
|
-
walkIR(ir, (node) => {
|
|
148
|
-
if (node.type === "enum" &&
|
|
149
|
-
node.values?.every((v) => typeof v === "string")) {
|
|
150
|
-
const discInfo = this.discriminatorInfo.get(node);
|
|
151
|
-
if (discInfo) {
|
|
152
|
-
this.getOrCreateEnumDeclaration(discInfo.allValues, node.path, node.description, node.title);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
this.getOrCreateEnumDeclaration(node.values, node.path, node.description, node.title);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else if (node.type === "literal" &&
|
|
159
|
-
typeof node.constraints?.value === "string") {
|
|
160
|
-
const discInfo = this.discriminatorInfo.get(node);
|
|
161
|
-
if (discInfo) {
|
|
162
|
-
this.getOrCreateEnumDeclaration(discInfo.allValues, node.path, node.description, node.title);
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
this.getOrCreateEnumDeclaration([node.constraints.value], node.path, node.description, node.title);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}, "pre");
|
|
169
|
-
}
|
|
170
|
-
generateEnumType(ir) {
|
|
171
|
-
if (this.enumStyle === "enum" &&
|
|
172
|
-
!this.inlineTypes &&
|
|
173
|
-
ir.values?.every((v) => typeof v === "string")) {
|
|
174
|
-
const discInfo = this.discriminatorInfo.get(ir);
|
|
175
|
-
if (discInfo) {
|
|
176
|
-
const enumName = this.getOrCreateEnumDeclaration(discInfo.allValues, ir.path, ir.description, ir.title);
|
|
177
|
-
return `${enumName}.${this.toEnumMemberName(discInfo.thisValue)}`;
|
|
178
|
-
}
|
|
179
|
-
return this.getOrCreateEnumDeclaration(ir.values, ir.path, ir.description, ir.title);
|
|
180
|
-
}
|
|
181
|
-
return super.generateEnumType(ir);
|
|
182
|
-
}
|
|
183
|
-
generateLiteralType(ir) {
|
|
184
|
-
if (this.enumStyle === "enum" &&
|
|
185
|
-
!this.inlineTypes &&
|
|
186
|
-
typeof ir.constraints?.value === "string") {
|
|
187
|
-
const discInfo = this.discriminatorInfo.get(ir);
|
|
188
|
-
if (discInfo) {
|
|
189
|
-
const enumName = this.getOrCreateEnumDeclaration(discInfo.allValues, ir.path, ir.description, ir.title);
|
|
190
|
-
return `${enumName}.${this.toEnumMemberName(discInfo.thisValue)}`;
|
|
191
|
-
}
|
|
192
|
-
return this.getOrCreateEnumDeclaration([ir.constraints.value], ir.path, ir.description, ir.title);
|
|
193
|
-
}
|
|
194
|
-
return super.generateLiteralType(ir);
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Returns (or creates) a deduplicated enum declaration for the given string values.
|
|
198
|
-
* Same set of values at different paths reuses the same enum.
|
|
199
|
-
*
|
|
200
|
-
* Name derivation uses PathUtils to strip array indices, then progressively
|
|
201
|
-
* includes parent path segments for collision resolution (e.g. "Type" →
|
|
202
|
-
* "ArgsType" → "DataArgsType") before falling back to a numeric suffix.
|
|
203
|
-
*/
|
|
204
|
-
getOrCreateEnumDeclaration(values, path, description, title) {
|
|
205
|
-
const canonicalKey = JSON.stringify([...values].sort());
|
|
206
|
-
const existing = this.enumDeclarations.get(canonicalKey);
|
|
207
|
-
if (existing) {
|
|
208
|
-
if (!existing.description && description) {
|
|
209
|
-
existing.description = description;
|
|
210
|
-
}
|
|
211
|
-
if (!existing.title && title) {
|
|
212
|
-
existing.title = title;
|
|
213
|
-
}
|
|
214
|
-
return existing.name;
|
|
215
|
-
}
|
|
216
|
-
const enumName = this.deriveEnumName(path);
|
|
217
|
-
this.usedDeclarationNames.add(enumName);
|
|
218
|
-
// Build members with collision resolution
|
|
219
|
-
const usedMemberNames = new Set();
|
|
220
|
-
const members = values.map((value) => {
|
|
221
|
-
let memberName = this.toEnumMemberName(value);
|
|
222
|
-
let memberBase = memberName;
|
|
223
|
-
let memberCounter = 2;
|
|
224
|
-
while (usedMemberNames.has(memberName)) {
|
|
225
|
-
memberName = memberBase + memberCounter;
|
|
226
|
-
memberCounter++;
|
|
227
|
-
}
|
|
228
|
-
usedMemberNames.add(memberName);
|
|
229
|
-
return { key: memberName, value };
|
|
230
|
-
});
|
|
231
|
-
this.enumDeclarations.set(canonicalKey, {
|
|
232
|
-
name: enumName,
|
|
233
|
-
members,
|
|
234
|
-
title,
|
|
235
|
-
description,
|
|
236
|
-
});
|
|
237
|
-
return enumName;
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Derives a unique, valid TypeScript enum name from a dot-notation path.
|
|
241
|
-
* Strips array indices via PathUtils, then tries the last segment ("Type"),
|
|
242
|
-
* escalates to include parent segments on collision ("ArgsType", "DataArgsType"),
|
|
243
|
-
* and falls back to a numeric suffix as a last resort.
|
|
244
|
-
*/
|
|
245
|
-
deriveEnumName(path) {
|
|
246
|
-
const segments = PathUtils.parsePath(path).filter((x) => !/^\d+$/.test(x));
|
|
247
|
-
if (segments.length === 0) {
|
|
248
|
-
return this.findAvailableName("Value");
|
|
249
|
-
}
|
|
250
|
-
// Try progressively more parent path segments
|
|
251
|
-
for (let count = 1; count <= segments.length; count++) {
|
|
252
|
-
const proposed = segments.slice(-count).map(toPascalCase).join("");
|
|
253
|
-
if (proposed &&
|
|
254
|
-
this.isValidIdentifier(proposed) &&
|
|
255
|
-
!this.usedDeclarationNames.has(proposed)) {
|
|
256
|
-
return proposed;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
// All segment combinations exhausted or collided — use counter fallback
|
|
260
|
-
const fullName = segments.map(toPascalCase).join("") || "Value";
|
|
261
|
-
return this.findAvailableName(this.isValidIdentifier(fullName) ? fullName : "Value");
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Returns the given name if available, otherwise appends incrementing
|
|
265
|
-
* counters (e.g. "Value2", "Value3") until a unique name is found.
|
|
266
|
-
*/
|
|
267
|
-
findAvailableName(baseName) {
|
|
268
|
-
if (!this.usedDeclarationNames.has(baseName))
|
|
269
|
-
return baseName;
|
|
270
|
-
let counter = 2;
|
|
271
|
-
while (this.usedDeclarationNames.has(baseName + counter)) {
|
|
272
|
-
counter++;
|
|
273
|
-
}
|
|
274
|
-
return baseName + counter;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Converts a string value to a valid PascalCase enum member name.
|
|
278
|
-
*/
|
|
279
|
-
toEnumMemberName(value) {
|
|
280
|
-
let name = toPascalCase(value);
|
|
281
|
-
name = name.replace(/[^a-zA-Z0-9_]/g, "");
|
|
282
|
-
if (/^\d/.test(name))
|
|
283
|
-
name = "_" + name;
|
|
284
|
-
if (!name)
|
|
285
|
-
name = "Value";
|
|
286
|
-
return name;
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Recursively walks the IR tree (bottom-up) and merges anyOf unions
|
|
290
|
-
* whose options are all objects with compatible property types.
|
|
291
|
-
* Merged enums collect values from all options; properties missing
|
|
292
|
-
* from some options become optional in the merged type.
|
|
293
|
-
*/
|
|
294
|
-
mergeCompatibleUnions(ir) {
|
|
295
|
-
return walkIR(ir, (node) => {
|
|
296
|
-
if (node.type === "union" &&
|
|
297
|
-
node.constraints?.combinator === "anyOf" &&
|
|
298
|
-
node.options &&
|
|
299
|
-
node.options.length > 1) {
|
|
300
|
-
return this.tryMergeObjectUnion(node);
|
|
301
|
-
}
|
|
302
|
-
return undefined;
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* Attempts to merge all options of an anyOf union into a single object type.
|
|
307
|
-
* Returns the merged IRNode, or null if the options are not compatible.
|
|
308
|
-
*/
|
|
309
|
-
tryMergeObjectUnion(ir) {
|
|
310
|
-
const options = ir.options;
|
|
311
|
-
// All options must be objects
|
|
312
|
-
if (!options.every((opt) => opt.type === "object")) {
|
|
313
|
-
return null;
|
|
314
|
-
}
|
|
315
|
-
// Bail if any option has patternProperties
|
|
316
|
-
if (options.some((opt) => opt.patternProperties)) {
|
|
317
|
-
return null;
|
|
318
|
-
}
|
|
319
|
-
// Bail if options have conflicting additionalProperties values.
|
|
320
|
-
// Identical values (all false, all true, all same schema) are fine.
|
|
321
|
-
const apValues = options.map((opt) => opt.additionalProperties);
|
|
322
|
-
const hasAp = apValues.some((v) => v !== undefined);
|
|
323
|
-
if (hasAp) {
|
|
324
|
-
const serialized = apValues.map((v) => JSON.stringify(v ?? null));
|
|
325
|
-
if (!serialized.every((s) => s === serialized[0])) {
|
|
326
|
-
return null;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
// Collect all property names in first-seen order across options
|
|
330
|
-
const { allPropNames, sharedPropNames } = this.collectUnionPropertyNames(options);
|
|
331
|
-
if (allPropNames.length === 0) {
|
|
332
|
-
return null;
|
|
333
|
-
}
|
|
334
|
-
// Only merge when options share at least one property name —
|
|
335
|
-
// disjoint objects should remain as a union to preserve semantics.
|
|
336
|
-
if (sharedPropNames.length === 0) {
|
|
337
|
-
return null;
|
|
338
|
-
}
|
|
339
|
-
// Detect discriminated unions: if a shared property has different
|
|
340
|
-
// const/single-value-enum values across options AND there are
|
|
341
|
-
// option-specific (non-shared) properties, this is a tagged union
|
|
342
|
-
// where merging would lose the correlation between discriminator
|
|
343
|
-
// and variant-specific fields.
|
|
344
|
-
if (this.isDiscriminatedUnion(options, sharedPropNames, allPropNames)) {
|
|
345
|
-
return null;
|
|
346
|
-
}
|
|
347
|
-
// Try to merge each property across all options
|
|
348
|
-
const mergedProperties = {};
|
|
349
|
-
for (const propName of allPropNames) {
|
|
350
|
-
const instances = [];
|
|
351
|
-
for (const opt of options) {
|
|
352
|
-
if (opt.properties?.[propName]) {
|
|
353
|
-
instances.push(opt.properties[propName]);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
const merged = this.tryMergeProperty(instances);
|
|
357
|
-
if (!merged) {
|
|
358
|
-
return null; // Incompatible — bail out, keep as union
|
|
359
|
-
}
|
|
360
|
-
// Required only if property exists in ALL options AND required in all
|
|
361
|
-
const existsInAll = options.every((opt) => opt.properties?.[propName] !== undefined);
|
|
362
|
-
const requiredInAll = instances.every((inst) => inst.required === true);
|
|
363
|
-
merged.required = existsInAll && requiredInAll;
|
|
364
|
-
mergedProperties[propName] = merged;
|
|
365
|
-
}
|
|
366
|
-
// Derive a name from the union's path
|
|
367
|
-
const pathSegments = ir.path.split(".").filter((x) => !/^\d+$/.test(x));
|
|
368
|
-
const name = pathSegments[pathSegments.length - 1] || "Merged";
|
|
369
|
-
const merged = {
|
|
370
|
-
type: "object",
|
|
371
|
-
properties: mergedProperties,
|
|
372
|
-
path: ir.path,
|
|
373
|
-
name,
|
|
374
|
-
signature: `merged:${++this.mergeCounter}`,
|
|
375
|
-
description: ir.description,
|
|
376
|
-
};
|
|
377
|
-
// Propagate additionalProperties when all options agree on the same value
|
|
378
|
-
if (hasAp) {
|
|
379
|
-
merged.additionalProperties = options[0].additionalProperties;
|
|
380
|
-
}
|
|
381
|
-
return merged;
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* Tries to merge multiple instances of the same property across union options.
|
|
385
|
-
* Returns the merged IRNode, or null if incompatible.
|
|
386
|
-
*/
|
|
387
|
-
tryMergeProperty(instances) {
|
|
388
|
-
if (instances.length === 0)
|
|
389
|
-
return null;
|
|
390
|
-
if (instances.length === 1)
|
|
391
|
-
return { ...instances[0] };
|
|
392
|
-
const isStringEnum = (ir) => ir.type === "enum" &&
|
|
393
|
-
ir.values?.every((v) => typeof v === "string");
|
|
394
|
-
const isStringLiteral = (ir) => ir.type === "literal" && typeof ir.constraints?.value === "string";
|
|
395
|
-
// Merge string enums and/or string literals into a single enum
|
|
396
|
-
if (instances.every((inst) => isStringEnum(inst) || isStringLiteral(inst))) {
|
|
397
|
-
const seen = new Set();
|
|
398
|
-
const mergedValues = [];
|
|
399
|
-
for (const inst of instances) {
|
|
400
|
-
const values = isStringEnum(inst)
|
|
401
|
-
? inst.values
|
|
402
|
-
: [inst.constraints.value];
|
|
403
|
-
for (const v of values) {
|
|
404
|
-
if (!seen.has(v)) {
|
|
405
|
-
seen.add(v);
|
|
406
|
-
mergedValues.push(v);
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
return {
|
|
411
|
-
type: "enum",
|
|
412
|
-
values: mergedValues,
|
|
413
|
-
path: instances[0].path,
|
|
414
|
-
};
|
|
415
|
-
}
|
|
416
|
-
// Same primitive type across all instances
|
|
417
|
-
const firstType = instances[0].type;
|
|
418
|
-
if (instances.every((inst) => inst.type === firstType) &&
|
|
419
|
-
["string", "number", "integer", "boolean", "null"].includes(firstType)) {
|
|
420
|
-
return { ...instances[0] };
|
|
421
|
-
}
|
|
422
|
-
// Same object signature across all instances
|
|
423
|
-
if (instances.every((inst) => inst.type === "object" && inst.signature) &&
|
|
424
|
-
instances.every((inst) => inst.signature === instances[0].signature)) {
|
|
425
|
-
return { ...instances[0] };
|
|
426
|
-
}
|
|
427
|
-
// Incompatible types
|
|
428
|
-
return null;
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* Detects discriminated union patterns where merging would lose
|
|
432
|
-
* semantic precision. A discriminated union requires:
|
|
433
|
-
* 1. A shared property with distinct const/single-value-enum per option
|
|
434
|
-
* (the "discriminator")
|
|
435
|
-
* 2. Every option has at least one property exclusive to only that option
|
|
436
|
-
* (variant-specific fields tied to the discriminator value)
|
|
437
|
-
*
|
|
438
|
-
* This distinguishes true tagged unions (circle+radius vs square+side)
|
|
439
|
-
* from schemas where single-value enums represent different values of
|
|
440
|
-
* the same field that should be merged (past/current/future → Timeframe).
|
|
441
|
-
*/
|
|
442
|
-
isDiscriminatedUnion(options, sharedPropNames, allPropNames) {
|
|
443
|
-
const hasOptionSpecificProps = allPropNames.length > sharedPropNames.length;
|
|
444
|
-
if (!hasOptionSpecificProps) {
|
|
445
|
-
return false;
|
|
446
|
-
}
|
|
447
|
-
// Reuse findDiscriminatorProperty instead of inline loop
|
|
448
|
-
const discriminator = this.findDiscriminatorProperty(options, sharedPropNames);
|
|
449
|
-
if (!discriminator) {
|
|
450
|
-
return false;
|
|
451
|
-
}
|
|
452
|
-
// For a true discriminated union, every option must have at least one
|
|
453
|
-
// property that is exclusive to ONLY that option (no other option has it).
|
|
454
|
-
// This distinguishes { kind:"circle", radius } | { kind:"square", side }
|
|
455
|
-
// from { timeframe:"past", title } | { timeframe:"current", title } | { timeframe:"future" }
|
|
456
|
-
const sharedSet = new Set(sharedPropNames);
|
|
457
|
-
return options.every((opt) => {
|
|
458
|
-
const optProps = Object.keys(opt.properties ?? {});
|
|
459
|
-
return optProps.some((propName) => {
|
|
460
|
-
if (sharedSet.has(propName))
|
|
461
|
-
return false;
|
|
462
|
-
// Check if this prop appears in any other option
|
|
463
|
-
return !options.some((other) => other !== opt && other.properties?.[propName] !== undefined);
|
|
464
|
-
});
|
|
465
|
-
});
|
|
466
|
-
}
|
|
467
|
-
/**
|
|
468
|
-
* Walks the IR tree and applies discriminated union enhancements
|
|
469
|
-
* to anyOf unions that survived merging.
|
|
470
|
-
*/
|
|
471
|
-
enhanceDiscriminatedUnions(ir) {
|
|
472
|
-
walkIR(ir, (node) => {
|
|
473
|
-
if (node.type === "union" &&
|
|
474
|
-
node.constraints?.combinator === "anyOf" &&
|
|
475
|
-
node.options &&
|
|
476
|
-
node.options.length > 1) {
|
|
477
|
-
this.applyDiscriminatedUnionEnhancements(node);
|
|
478
|
-
}
|
|
479
|
-
});
|
|
480
|
-
}
|
|
481
|
-
/**
|
|
482
|
-
* Enhances an unmerged anyOf union that has a discriminator property.
|
|
483
|
-
* Sets `ir.name` on each variant to a discriminator-derived name and
|
|
484
|
-
* populates `discriminatorInfo` for consolidated enum emission.
|
|
485
|
-
*/
|
|
486
|
-
applyDiscriminatedUnionEnhancements(ir) {
|
|
487
|
-
const options = ir.options;
|
|
488
|
-
if (!options || !options.every((opt) => opt.type === "object"))
|
|
489
|
-
return;
|
|
490
|
-
// Compute shared property names
|
|
491
|
-
const { sharedPropNames } = this.collectUnionPropertyNames(options);
|
|
492
|
-
const discriminator = this.findDiscriminatorProperty(options, sharedPropNames);
|
|
493
|
-
if (!discriminator)
|
|
494
|
-
return;
|
|
495
|
-
// Derive parent context name from the union's path
|
|
496
|
-
const pathSegments = ir.path.split(".").filter((x) => !/^\d+$/.test(x));
|
|
497
|
-
const parentName = pathSegments[pathSegments.length - 1] || "";
|
|
498
|
-
// Collect all discriminator values in order
|
|
499
|
-
const allValues = [];
|
|
500
|
-
for (const opt of options) {
|
|
501
|
-
const val = this.getConstStringValue(opt.properties[discriminator]);
|
|
502
|
-
if (val)
|
|
503
|
-
allValues.push(val);
|
|
504
|
-
}
|
|
505
|
-
// Collect signatures of object/array properties across all variants
|
|
506
|
-
// for cross-variant deduplication. If the same signature appears at
|
|
507
|
-
// different property names across variants, it should be deduplicated.
|
|
508
|
-
const signatureCounts = new Map();
|
|
509
|
-
for (const opt of options) {
|
|
510
|
-
if (!opt.properties)
|
|
511
|
-
continue;
|
|
512
|
-
for (const prop of Object.values(opt.properties)) {
|
|
513
|
-
if (prop.signature) {
|
|
514
|
-
signatureCounts.set(prop.signature, (signatureCounts.get(prop.signature) ?? 0) + 1);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
for (const [sig, count] of signatureCounts) {
|
|
519
|
-
if (count > 1)
|
|
520
|
-
this.dedupSignatures.add(sig);
|
|
521
|
-
}
|
|
522
|
-
for (const opt of options) {
|
|
523
|
-
const val = this.getConstStringValue(opt.properties[discriminator]);
|
|
524
|
-
if (!val)
|
|
525
|
-
continue;
|
|
526
|
-
// Set discriminator-derived variant name
|
|
527
|
-
const variantName = toPascalCase(val) + toPascalCase(parentName);
|
|
528
|
-
opt.name = variantName;
|
|
529
|
-
this.variantNames.set(opt, variantName);
|
|
530
|
-
// Populate discriminator info for consolidated enum emission
|
|
531
|
-
if (this.enumStyle === "enum" && !this.inlineTypes) {
|
|
532
|
-
const discProp = opt.properties[discriminator];
|
|
533
|
-
this.discriminatorInfo.set(discProp, { allValues, thisValue: val });
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
/**
|
|
538
|
-
* Collects all property names (in first-seen order) and shared property names
|
|
539
|
-
* across union options.
|
|
540
|
-
*/
|
|
541
|
-
collectUnionPropertyNames(options) {
|
|
542
|
-
const allPropNames = [];
|
|
543
|
-
const seenProps = new Set();
|
|
544
|
-
for (const opt of options) {
|
|
545
|
-
if (opt.properties) {
|
|
546
|
-
for (const key of Object.keys(opt.properties)) {
|
|
547
|
-
if (!seenProps.has(key)) {
|
|
548
|
-
seenProps.add(key);
|
|
549
|
-
allPropNames.push(key);
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
const sharedPropNames = allPropNames.filter((propName) => options.every((opt) => opt.properties?.[propName] !== undefined));
|
|
555
|
-
return { allPropNames, sharedPropNames };
|
|
556
|
-
}
|
|
557
|
-
/**
|
|
558
|
-
* Finds the discriminator property among shared properties: a property where
|
|
559
|
-
* each option has a distinct const or single-value-enum string value.
|
|
560
|
-
*/
|
|
561
|
-
findDiscriminatorProperty(options, sharedPropNames) {
|
|
562
|
-
for (const propName of sharedPropNames) {
|
|
563
|
-
const values = options.map((opt) => this.getConstStringValue(opt.properties?.[propName]));
|
|
564
|
-
if (values.every((v) => v !== undefined)) {
|
|
565
|
-
const uniqueValues = new Set(values);
|
|
566
|
-
if (uniqueValues.size === options.length) {
|
|
567
|
-
return propName;
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
return null;
|
|
572
|
-
}
|
|
573
|
-
/**
|
|
574
|
-
* Extracts a single const string value from an IR node (literal with string
|
|
575
|
-
* value or single-value string enum).
|
|
576
|
-
*/
|
|
577
|
-
getConstStringValue(ir) {
|
|
578
|
-
if (!ir)
|
|
579
|
-
return undefined;
|
|
580
|
-
if (ir.type === "literal" && typeof ir.constraints?.value === "string") {
|
|
581
|
-
return ir.constraints.value;
|
|
582
|
-
}
|
|
583
|
-
if (ir.type === "enum" &&
|
|
584
|
-
ir.values?.length === 1 &&
|
|
585
|
-
typeof ir.values[0] === "string") {
|
|
586
|
-
return ir.values[0];
|
|
587
|
-
}
|
|
588
|
-
return undefined;
|
|
589
|
-
}
|
|
590
|
-
shouldReuseExistingSignature(signature) {
|
|
591
|
-
return this.dedupSignatures.has(signature);
|
|
592
|
-
}
|
|
593
|
-
/**
|
|
594
|
-
* Override to use `ir.name` for discriminator-derived variant naming.
|
|
595
|
-
*/
|
|
596
|
-
resolveRefTypeName(ir, signature) {
|
|
597
|
-
const variantName = this.variantNames.get(ir);
|
|
598
|
-
if (variantName) {
|
|
599
|
-
const name = this.findAvailableName(variantName);
|
|
600
|
-
this.usedDeclarationNames.add(name);
|
|
601
|
-
return name;
|
|
602
|
-
}
|
|
603
|
-
return super.resolveRefTypeName(ir, signature);
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
//# sourceMappingURL=TypescriptConverter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TypescriptConverter.js","sourceRoot":"","sources":["../src/TypescriptConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|