@amartus/oas-utils 0.5.2 → 0.6.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 +7 -6
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/allOfToOneOfInterface.d.ts +36 -0
- package/dist/lib/allOfToOneOfInterface.d.ts.map +1 -0
- package/dist/lib/allOfToOneOfInterface.js +5 -0
- package/dist/lib/allOfToOneOfInterface.js.map +1 -0
- package/dist/lib/allOfToOneOfJsonPath.d.ts +60 -0
- package/dist/lib/allOfToOneOfJsonPath.d.ts.map +1 -0
- package/dist/lib/allOfToOneOfJsonPath.js +498 -0
- package/dist/lib/allOfToOneOfJsonPath.js.map +1 -0
- package/dist/lib/cliActions.d.ts +1 -0
- package/dist/lib/cliActions.d.ts.map +1 -1
- package/dist/lib/cliActions.js +3 -1
- package/dist/lib/cliActions.js.map +1 -1
- package/dist/lib/optimizeAllOfComposition.d.ts.map +1 -1
- package/dist/lib/optimizeAllOfComposition.js +1 -9
- package/dist/lib/optimizeAllOfComposition.js.map +1 -1
- package/dist/redocly/allof-to-oneof-decorator.js +1 -1
- package/dist/redocly/allof-to-oneof-decorator.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/allOfToOneOf.d.ts +0 -23
- package/dist/lib/allOfToOneOf.d.ts.map +0 -1
- package/dist/lib/allOfToOneOf.js +0 -413
- package/dist/lib/allOfToOneOf.js.map +0 -1
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
import { JSONPath } from 'jsonpath-plus';
|
|
2
|
+
import { refToName, buildInheritanceGraph } from './oasUtils.js';
|
|
3
|
+
// Type guard helpers to reduce repetition
|
|
4
|
+
const isValidObject = (obj) => obj !== null && typeof obj === 'object' && !Array.isArray(obj);
|
|
5
|
+
const isValidSchema = (schema) => isValidObject(schema);
|
|
6
|
+
const hasDiscriminator = (schema) => isValidSchema(schema) &&
|
|
7
|
+
isValidObject(schema.discriminator) &&
|
|
8
|
+
typeof schema.discriminator.propertyName === 'string' &&
|
|
9
|
+
isValidObject(schema.discriminator.mapping);
|
|
10
|
+
const isSchemaReference = (obj) => isValidObject(obj) && typeof obj.$ref === 'string';
|
|
11
|
+
/**
|
|
12
|
+
* Step 1: Find all schemas with discriminators.
|
|
13
|
+
* Only consider schemas with >1 mapping entry (actual polymorphic schemas).
|
|
14
|
+
* Exclude schemas that are already oneOf wrappers.
|
|
15
|
+
*/
|
|
16
|
+
function findDiscriminatorParents(schemas) {
|
|
17
|
+
const parents = new Map();
|
|
18
|
+
if (!isValidObject(schemas))
|
|
19
|
+
return parents;
|
|
20
|
+
for (const [name, schema] of Object.entries(schemas)) {
|
|
21
|
+
// Skip invalid schemas or existing oneOf wrappers
|
|
22
|
+
if (!hasDiscriminator(schema) || Array.isArray(schema.oneOf))
|
|
23
|
+
continue;
|
|
24
|
+
const { propertyName, mapping } = schema.discriminator;
|
|
25
|
+
const mappingKeys = Object.keys(mapping);
|
|
26
|
+
// Include schemas with >1 mapping entry OR self-referencing single entry
|
|
27
|
+
const isSelfReferencing = mappingKeys.length === 1 &&
|
|
28
|
+
Object.values(mapping).some((ref) => refToName(ref) === name);
|
|
29
|
+
if (mappingKeys.length > 1 || isSelfReferencing) {
|
|
30
|
+
parents.set(name, { propertyName, mapping: { ...mapping } });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return parents;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Step 3: Check if a schema is referenced outside of allOf contexts (inheritance).
|
|
37
|
+
* References in oneOf/anyOf are considered polymorphic usage and should get wrappers.
|
|
38
|
+
* Uses JSONPath to find all references and filters by context.
|
|
39
|
+
*/
|
|
40
|
+
function isReferencedOutsideComposition(schemaName, doc) {
|
|
41
|
+
const schemaRef = `#/components/schemas/${schemaName}`;
|
|
42
|
+
const usageContexts = new Set(['oneOf', 'anyOf', 'properties', 'items', 'schema']);
|
|
43
|
+
const allRefs = JSONPath({
|
|
44
|
+
path: '$..$ref',
|
|
45
|
+
json: doc,
|
|
46
|
+
resultType: 'all'
|
|
47
|
+
});
|
|
48
|
+
for (const refResult of allRefs) {
|
|
49
|
+
if (refResult.value !== schemaRef)
|
|
50
|
+
continue;
|
|
51
|
+
const pathParts = refResult.path
|
|
52
|
+
.replace(/\['/g, '.')
|
|
53
|
+
.replace(/'\]/g, '')
|
|
54
|
+
.replace(/\[/g, '.')
|
|
55
|
+
.replace(/\]/g, '')
|
|
56
|
+
.split('.')
|
|
57
|
+
.filter(Boolean);
|
|
58
|
+
// Look backwards for context
|
|
59
|
+
let inAllOf = -1;
|
|
60
|
+
let inDiscriminatorMapping = -1;
|
|
61
|
+
let inUsageContext = -1;
|
|
62
|
+
for (let i = pathParts.length - 1; i >= 0; i--) {
|
|
63
|
+
const part = pathParts[i];
|
|
64
|
+
if (inAllOf === -1 && part === 'allOf') {
|
|
65
|
+
inAllOf = i;
|
|
66
|
+
}
|
|
67
|
+
if (inDiscriminatorMapping === -1 && (part === 'discriminator' || part === 'mapping')) {
|
|
68
|
+
inDiscriminatorMapping = i;
|
|
69
|
+
}
|
|
70
|
+
if (inUsageContext === -1 && usageContexts.has(part)) {
|
|
71
|
+
inUsageContext = i;
|
|
72
|
+
}
|
|
73
|
+
if (inAllOf !== -1 && inDiscriminatorMapping !== -1 && inUsageContext !== -1)
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
// Skip if in allOf (pure inheritance) or in discriminator mapping (metadata)
|
|
77
|
+
if (inAllOf !== -1 || inDiscriminatorMapping !== -1) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
// If in a usage context or neither, it's actual usage
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Step 4: Validate and get children for a parent.
|
|
87
|
+
* Returns valid inheriting children separately from all mapped children.
|
|
88
|
+
*/
|
|
89
|
+
function validateAndGetChildren(parentName, mapping, schemas, inheritanceGraph) {
|
|
90
|
+
const validChildren = [];
|
|
91
|
+
const allChildren = [];
|
|
92
|
+
const warnings = [];
|
|
93
|
+
const descendants = inheritanceGraph.get(parentName) || new Set();
|
|
94
|
+
for (const [discriminatorValue, ref] of Object.entries(mapping)) {
|
|
95
|
+
const childName = refToName(ref);
|
|
96
|
+
if (!childName) {
|
|
97
|
+
warnings.push(`Invalid reference in discriminator mapping for "${parentName}": ${ref}`);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (!schemas[childName]) {
|
|
101
|
+
warnings.push(`Schema "${childName}" referenced in "${parentName}" discriminator mapping does not exist`);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
allChildren.push(childName);
|
|
105
|
+
// Check if child inherits from parent (including self-reference)
|
|
106
|
+
const inheritsFromParent = descendants.has(childName) || childName === parentName;
|
|
107
|
+
if (inheritsFromParent) {
|
|
108
|
+
validChildren.push(childName);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
warnings.push(`Schema "${childName}" in discriminator mapping does not inherit from "${parentName}". ` +
|
|
112
|
+
`It will be kept in the mapping but not in oneOf.`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return { validChildren, allChildren, warnings };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Step 4b: Create polymorphic wrappers for parents that are referenced.
|
|
119
|
+
* This is the new type that is oneOf of the valid children. The original parent schema is kept as-is (without discriminator)
|
|
120
|
+
*/
|
|
121
|
+
function createPolymorphicWrappers(schemas, discriminatorParents, inheritanceGraph, doc, opts) {
|
|
122
|
+
const wrappers = new Map();
|
|
123
|
+
const allWarnings = [];
|
|
124
|
+
const wrapperSuffix = 'Polymorphic';
|
|
125
|
+
// First pass: determine which schemas will get wrappers
|
|
126
|
+
const schemasGettingWrappers = new Set();
|
|
127
|
+
for (const [parentName, discInfo] of discriminatorParents.entries()) {
|
|
128
|
+
const { validChildren } = validateAndGetChildren(parentName, discInfo.mapping, schemas, inheritanceGraph);
|
|
129
|
+
// Only create wrapper if schema is referenced outside allOf (actual usage)
|
|
130
|
+
// If it's only used for inheritance, children handle their own polymorphism
|
|
131
|
+
const isReferencedDirectly = isReferencedOutsideComposition(parentName, doc);
|
|
132
|
+
if (isReferencedDirectly && validChildren.length > 0) {
|
|
133
|
+
if (validChildren.length === 1 && (opts.ignoreSingleSpecialization || validChildren[0] === parentName)) {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
schemasGettingWrappers.add(parentName);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function createWrapper(parentName, discInfo, validChildren) {
|
|
140
|
+
// Only create wrapper if schema is referenced outside allOf (actual usage)
|
|
141
|
+
// If it's only used for inheritance, children handle their own polymorphism
|
|
142
|
+
const isReferencedDirectly = isReferencedOutsideComposition(parentName, doc);
|
|
143
|
+
if (!isReferencedDirectly || validChildren.length === 0) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (validChildren.length === 1) {
|
|
147
|
+
if (opts.ignoreSingleSpecialization || (validChildren[0] === parentName)) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Build a map from concrete schema names to their discriminator values BEFORE modifying mapping
|
|
152
|
+
const schemaToDiscriminatorValue = new Map();
|
|
153
|
+
for (const [value, ref] of Object.entries(discInfo.mapping)) {
|
|
154
|
+
if (typeof ref === 'string') {
|
|
155
|
+
const schemaName = refToName(ref);
|
|
156
|
+
if (schemaName && validChildren.includes(schemaName)) {
|
|
157
|
+
schemaToDiscriminatorValue.set(schemaName, value);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Add const properties (creates wrapper for parent self-reference)
|
|
162
|
+
// Do this BEFORE building oneOf so we can use the updated mapping
|
|
163
|
+
if (opts.addDiscriminatorConst !== false) {
|
|
164
|
+
const result = addDiscriminatorConstToChildren(schemas, validChildren, discInfo, parentName, schemasGettingWrappers);
|
|
165
|
+
// Update the mapping if it changed
|
|
166
|
+
if (result.updatedMapping) {
|
|
167
|
+
discInfo.mapping = result.updatedMapping;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Build oneOf using the (potentially updated) mapping values
|
|
171
|
+
const oneOfRefs = validChildren.map(name => {
|
|
172
|
+
// Find the discriminator value for this schema
|
|
173
|
+
const discValue = schemaToDiscriminatorValue.get(name);
|
|
174
|
+
if (discValue && discInfo.mapping[discValue]) {
|
|
175
|
+
// Use the (potentially updated) mapping value
|
|
176
|
+
return { $ref: discInfo.mapping[discValue] };
|
|
177
|
+
}
|
|
178
|
+
// Fallback to direct reference if not found in mapping
|
|
179
|
+
return { $ref: `#/components/schemas/${name}` };
|
|
180
|
+
});
|
|
181
|
+
const wrapperSchema = {
|
|
182
|
+
oneOf: oneOfRefs,
|
|
183
|
+
discriminator: {
|
|
184
|
+
propertyName: discInfo.propertyName,
|
|
185
|
+
mapping: discInfo.mapping // Use updated mapping
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
return wrapperSchema;
|
|
189
|
+
}
|
|
190
|
+
for (const [parentName, discInfo] of discriminatorParents.entries()) {
|
|
191
|
+
// Validate and get children FIRST
|
|
192
|
+
const { validChildren, warnings } = validateAndGetChildren(parentName, discInfo.mapping, schemas, inheritanceGraph);
|
|
193
|
+
allWarnings.push(...warnings);
|
|
194
|
+
const wrapperSchema = createWrapper(parentName, discInfo, validChildren);
|
|
195
|
+
if (wrapperSchema) {
|
|
196
|
+
const wrapperName = `${parentName}${wrapperSuffix}`;
|
|
197
|
+
schemas[wrapperName] = wrapperSchema;
|
|
198
|
+
wrappers.set(parentName, { wrapperName, childNames: validChildren });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (allWarnings.length > 0 && opts.onWarning) {
|
|
202
|
+
for (const warning of allWarnings) {
|
|
203
|
+
opts.onWarning(warning);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return wrappers;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Step 5: Add const constraints to children.
|
|
210
|
+
* For parent self-references, creates a wrapper schema with allOf + const.
|
|
211
|
+
*/
|
|
212
|
+
function addDiscriminatorConstToChildren(schemas, childNames, discInfo, parentName, schemasGettingWrappers) {
|
|
213
|
+
const updatedMapping = { ...discInfo.mapping };
|
|
214
|
+
let mappingChanged = false;
|
|
215
|
+
// Build reverse lookup: childName -> discriminatorValue
|
|
216
|
+
const childToDiscValue = new Map(Object.entries(discInfo.mapping)
|
|
217
|
+
.map(([value, ref]) => [refToName(ref), value])
|
|
218
|
+
.filter((pair) => pair[0] !== undefined));
|
|
219
|
+
const createConstConstraint = (propName, value) => ({
|
|
220
|
+
type: 'object',
|
|
221
|
+
properties: { [propName]: { const: value } }
|
|
222
|
+
});
|
|
223
|
+
for (const childName of childNames) {
|
|
224
|
+
const childSchema = schemas[childName];
|
|
225
|
+
const discriminatorValue = childToDiscValue.get(childName);
|
|
226
|
+
if (!childSchema || !discriminatorValue)
|
|
227
|
+
continue;
|
|
228
|
+
// Special handling for parent self-reference: create wrapper
|
|
229
|
+
if (childName === parentName) {
|
|
230
|
+
const wrapperName = `${parentName}OneOf`;
|
|
231
|
+
schemas[wrapperName] = {
|
|
232
|
+
allOf: [
|
|
233
|
+
{ $ref: `#/components/schemas/${parentName}` },
|
|
234
|
+
createConstConstraint(discInfo.propertyName, discriminatorValue)
|
|
235
|
+
]
|
|
236
|
+
};
|
|
237
|
+
updatedMapping[discriminatorValue] = `#/components/schemas/${wrapperName}`;
|
|
238
|
+
mappingChanged = true;
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
// Skip adding const to children that will get their own wrappers
|
|
242
|
+
// They will handle their own const via their OneOf wrapper
|
|
243
|
+
if (schemasGettingWrappers.has(childName)) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
// Add const to child's allOf if not already present
|
|
247
|
+
if (!Array.isArray(childSchema.allOf)) {
|
|
248
|
+
childSchema.allOf = [];
|
|
249
|
+
}
|
|
250
|
+
const constExists = childSchema.allOf.some((item) => isValidSchema(item) &&
|
|
251
|
+
isValidObject(item.properties) &&
|
|
252
|
+
isValidObject(item.properties[discInfo.propertyName]) &&
|
|
253
|
+
item.properties[discInfo.propertyName].const === discriminatorValue);
|
|
254
|
+
if (!constExists) {
|
|
255
|
+
childSchema.allOf.push(createConstConstraint(discInfo.propertyName, discriminatorValue));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return mappingChanged ? { updatedMapping } : {};
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Step 6: Replace references using JSONPath.
|
|
262
|
+
* Replace all non-composition references from parent to wrapper.
|
|
263
|
+
*/
|
|
264
|
+
function replaceReferencesWithWrappers(doc, wrappers) {
|
|
265
|
+
const replacementMap = new Map(Array.from(wrappers.entries()).map(([parentName, { wrapperName }]) => [
|
|
266
|
+
`#/components/schemas/${parentName}`,
|
|
267
|
+
`#/components/schemas/${wrapperName}`
|
|
268
|
+
]));
|
|
269
|
+
const replaceRefs = (obj) => {
|
|
270
|
+
if (!obj)
|
|
271
|
+
return;
|
|
272
|
+
const results = JSONPath({
|
|
273
|
+
path: '$..$ref',
|
|
274
|
+
json: obj,
|
|
275
|
+
resultType: 'all',
|
|
276
|
+
});
|
|
277
|
+
for (const result of results) {
|
|
278
|
+
const replacement = typeof result.value === 'string' ? replacementMap.get(result.value) : undefined;
|
|
279
|
+
if (replacement && result.parent && result.parentProperty !== undefined) {
|
|
280
|
+
result.parent[result.parentProperty] = replacement;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
// Process schemas separately to preserve allOf/anyOf/oneOf inheritance
|
|
285
|
+
const schemas = doc.components?.schemas;
|
|
286
|
+
if (isValidObject(schemas)) {
|
|
287
|
+
for (const schema of Object.values(schemas)) {
|
|
288
|
+
if (!isValidSchema(schema))
|
|
289
|
+
continue;
|
|
290
|
+
// Preserve composition arrays - replace refs only in non-composition parts
|
|
291
|
+
const { allOf, anyOf, oneOf, ...schemaWithoutComposition } = schema;
|
|
292
|
+
replaceRefs(schemaWithoutComposition);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Process other sections - replace all refs
|
|
296
|
+
const sections = [
|
|
297
|
+
doc.paths,
|
|
298
|
+
doc.webhooks,
|
|
299
|
+
doc.components?.requestBodies,
|
|
300
|
+
doc.components?.responses,
|
|
301
|
+
doc.components?.parameters,
|
|
302
|
+
doc.components?.callbacks,
|
|
303
|
+
doc.components?.links,
|
|
304
|
+
doc.components?.headers,
|
|
305
|
+
];
|
|
306
|
+
sections.filter(isValidObject).forEach(replaceRefs);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Step 7: Chain polymorphic wrappers.
|
|
310
|
+
* If a wrapper's oneOf references another polymorphic parent, redirect to that parent's wrapper.
|
|
311
|
+
*/
|
|
312
|
+
function chainPolymorphicWrappers(schemas, wrappers) {
|
|
313
|
+
if (wrappers.size <= 1)
|
|
314
|
+
return;
|
|
315
|
+
for (const [parentName, { wrapperName }] of wrappers.entries()) {
|
|
316
|
+
const wrapperSchema = schemas[wrapperName];
|
|
317
|
+
if (!Array.isArray(wrapperSchema?.oneOf))
|
|
318
|
+
continue;
|
|
319
|
+
wrapperSchema.oneOf = wrapperSchema.oneOf.map((entry) => {
|
|
320
|
+
if (!isSchemaReference(entry))
|
|
321
|
+
return entry;
|
|
322
|
+
const targetName = entry.$ref ? refToName(entry.$ref) : null;
|
|
323
|
+
const nestedWrapper = targetName && targetName !== parentName ? wrappers.get(targetName) : null;
|
|
324
|
+
return nestedWrapper
|
|
325
|
+
? { $ref: `#/components/schemas/${nestedWrapper.wrapperName}` }
|
|
326
|
+
: entry;
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Update existing oneOf schemas to reference polymorphic wrappers.
|
|
332
|
+
* This handles pre-existing oneOf schemas (not created by this transform) that reference
|
|
333
|
+
* schemas which got polymorphic wrappers.
|
|
334
|
+
*/
|
|
335
|
+
function updateExistingOneOfReferences(schemas, wrappers) {
|
|
336
|
+
if (wrappers.size === 0)
|
|
337
|
+
return;
|
|
338
|
+
const createdWrappers = new Set(Array.from(wrappers.values()).map(w => w.wrapperName));
|
|
339
|
+
const updateRef = (ref) => {
|
|
340
|
+
if (typeof ref !== 'string')
|
|
341
|
+
return String(ref);
|
|
342
|
+
if (!ref.startsWith('#/components/schemas/'))
|
|
343
|
+
return ref;
|
|
344
|
+
const targetName = refToName(ref);
|
|
345
|
+
const wrapper = targetName ? wrappers.get(targetName) : null;
|
|
346
|
+
return wrapper ? `#/components/schemas/${wrapper.wrapperName}` : ref;
|
|
347
|
+
};
|
|
348
|
+
for (const [schemaName, schema] of Object.entries(schemas)) {
|
|
349
|
+
if (!isValidSchema(schema) || !Array.isArray(schema.oneOf))
|
|
350
|
+
continue;
|
|
351
|
+
if (createdWrappers.has(schemaName))
|
|
352
|
+
continue;
|
|
353
|
+
// Update oneOf references
|
|
354
|
+
schema.oneOf = schema.oneOf.map((entry) => isSchemaReference(entry) ? { $ref: updateRef(entry.$ref) } : entry);
|
|
355
|
+
// Update discriminator mapping if present
|
|
356
|
+
if (schema.discriminator?.mapping) {
|
|
357
|
+
schema.discriminator.mapping = Object.fromEntries(Object.entries(schema.discriminator.mapping).map(([key, ref]) => [key, updateRef(ref)]));
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Step 8: Remove discriminators from parent schemas.
|
|
363
|
+
*/
|
|
364
|
+
function removeDiscriminatorFromParents(schemas, wrappers, doc) {
|
|
365
|
+
// Case 1: Remove from schemas that got wrappers
|
|
366
|
+
for (const parentName of wrappers.keys()) {
|
|
367
|
+
delete schemas[parentName]?.discriminator;
|
|
368
|
+
}
|
|
369
|
+
// Case 2: Remove from schemas that didn't get wrappers but have wrapped children
|
|
370
|
+
for (const [schemaName, schema] of Object.entries(schemas)) {
|
|
371
|
+
if (!hasDiscriminator(schema) || wrappers.has(schemaName))
|
|
372
|
+
continue;
|
|
373
|
+
if (isReferencedOutsideComposition(schemaName, doc))
|
|
374
|
+
continue;
|
|
375
|
+
// Check if any child has a wrapper
|
|
376
|
+
const hasWrappedChild = Object.values(schema.discriminator.mapping)
|
|
377
|
+
.some(ref => {
|
|
378
|
+
const childName = typeof ref === 'string' ? refToName(ref) : null;
|
|
379
|
+
return childName && wrappers.has(childName);
|
|
380
|
+
});
|
|
381
|
+
if (hasWrappedChild) {
|
|
382
|
+
// Use Reflect to delete the optional property
|
|
383
|
+
Reflect.deleteProperty(schema, 'discriminator');
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Step 9: Merge nested oneOf schemas (optional).
|
|
389
|
+
*/
|
|
390
|
+
function mergeNestedOneOfSchemas(schemas) {
|
|
391
|
+
if (!isValidObject(schemas))
|
|
392
|
+
return;
|
|
393
|
+
// Identify simple oneOf wrappers
|
|
394
|
+
const simpleOneOfSchemas = new Set(Object.entries(schemas)
|
|
395
|
+
.filter(([_, schema]) => isSimpleOneOfSchema(schema))
|
|
396
|
+
.map(([name, _]) => name));
|
|
397
|
+
if (simpleOneOfSchemas.size === 0)
|
|
398
|
+
return;
|
|
399
|
+
// Merge nested oneOf
|
|
400
|
+
for (const schema of Object.values(schemas)) {
|
|
401
|
+
if (!isValidSchema(schema) || !Array.isArray(schema.oneOf))
|
|
402
|
+
continue;
|
|
403
|
+
// First pass: collect discriminator property names from candidate children
|
|
404
|
+
const candidatePropertyNames = new Set();
|
|
405
|
+
for (const entry of schema.oneOf) {
|
|
406
|
+
const refName = isSchemaReference(entry) ? refToName(entry.$ref) : null;
|
|
407
|
+
if (!refName || !simpleOneOfSchemas.has(refName))
|
|
408
|
+
continue;
|
|
409
|
+
const referencedSchema = schemas[refName];
|
|
410
|
+
if (referencedSchema?.discriminator?.propertyName) {
|
|
411
|
+
candidatePropertyNames.add(referencedSchema.discriminator.propertyName);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
// Only merge if all candidates use the same discriminator property name
|
|
415
|
+
const canMerge = candidatePropertyNames.size <= 1;
|
|
416
|
+
if (!canMerge) {
|
|
417
|
+
// Skip merging for this schema - children have conflicting discriminator property names
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
let modified = false;
|
|
421
|
+
const newOneOf = [];
|
|
422
|
+
const mergedMappings = {};
|
|
423
|
+
const discriminatorPropertyNames = new Set();
|
|
424
|
+
for (const entry of schema.oneOf) {
|
|
425
|
+
const refName = isSchemaReference(entry) ? refToName(entry.$ref) : null;
|
|
426
|
+
if (!refName || !simpleOneOfSchemas.has(refName)) {
|
|
427
|
+
newOneOf.push(entry);
|
|
428
|
+
continue;
|
|
429
|
+
}
|
|
430
|
+
// Inline the referenced oneOf
|
|
431
|
+
const referencedSchema = schemas[refName];
|
|
432
|
+
if (Array.isArray(referencedSchema?.oneOf)) {
|
|
433
|
+
newOneOf.push(...referencedSchema.oneOf);
|
|
434
|
+
Object.assign(mergedMappings, referencedSchema.discriminator?.mapping || {});
|
|
435
|
+
// Track discriminator property name
|
|
436
|
+
if (referencedSchema.discriminator?.propertyName) {
|
|
437
|
+
discriminatorPropertyNames.add(referencedSchema.discriminator.propertyName);
|
|
438
|
+
}
|
|
439
|
+
modified = true;
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
newOneOf.push(entry);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
if (modified) {
|
|
446
|
+
// Remove duplicates by key
|
|
447
|
+
const uniqueRefs = new Map(newOneOf.map(entry => [entry?.$ref || JSON.stringify(entry), entry]));
|
|
448
|
+
schema.oneOf = Array.from(uniqueRefs.values());
|
|
449
|
+
// Merge discriminator mappings
|
|
450
|
+
if (Object.keys(mergedMappings).length > 0) {
|
|
451
|
+
// Use the common property name from children, or default to 'type'
|
|
452
|
+
const propertyName = discriminatorPropertyNames.size === 1
|
|
453
|
+
? Array.from(discriminatorPropertyNames)[0]
|
|
454
|
+
: 'type';
|
|
455
|
+
schema.discriminator = schema.discriminator || { propertyName, mapping: {} };
|
|
456
|
+
schema.discriminator.mapping = { ...schema.discriminator.mapping, ...mergedMappings };
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Check if a schema is a simple oneOf wrapper.
|
|
463
|
+
*/
|
|
464
|
+
function isSimpleOneOfSchema(schema) {
|
|
465
|
+
if (!isValidSchema(schema) || !Array.isArray(schema.oneOf) || schema.oneOf.length === 0) {
|
|
466
|
+
return false;
|
|
467
|
+
}
|
|
468
|
+
const allowedKeys = new Set(['oneOf', 'discriminator', 'description']);
|
|
469
|
+
const disallowedProps = ['allOf', 'anyOf', 'properties', 'type'];
|
|
470
|
+
return Object.keys(schema).every(key => allowedKeys.has(key)) &&
|
|
471
|
+
disallowedProps.every(prop => !schema[prop]);
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Main transformation function.
|
|
475
|
+
* Converts allOf + discriminator patterns to oneOf wrappers using JSONPath.
|
|
476
|
+
*/
|
|
477
|
+
export function allOfToOneOf(doc, opts = {}) {
|
|
478
|
+
const schemas = doc?.components?.schemas;
|
|
479
|
+
if (!isValidObject(doc) || !isValidObject(schemas))
|
|
480
|
+
return doc;
|
|
481
|
+
const discriminatorParents = findDiscriminatorParents(schemas);
|
|
482
|
+
// Early exit if nothing to do
|
|
483
|
+
if (discriminatorParents.size === 0 && !opts.mergeNestedOneOf)
|
|
484
|
+
return doc;
|
|
485
|
+
const inheritanceGraph = buildInheritanceGraph(schemas);
|
|
486
|
+
const wrappers = createPolymorphicWrappers(schemas, discriminatorParents, inheritanceGraph, doc, opts);
|
|
487
|
+
if (wrappers.size > 0) {
|
|
488
|
+
replaceReferencesWithWrappers(doc, wrappers);
|
|
489
|
+
chainPolymorphicWrappers(schemas, wrappers);
|
|
490
|
+
updateExistingOneOfReferences(schemas, wrappers);
|
|
491
|
+
removeDiscriminatorFromParents(schemas, wrappers, doc);
|
|
492
|
+
}
|
|
493
|
+
if (opts.mergeNestedOneOf) {
|
|
494
|
+
mergeNestedOneOfSchemas(schemas);
|
|
495
|
+
}
|
|
496
|
+
return doc;
|
|
497
|
+
}
|
|
498
|
+
//# sourceMappingURL=allOfToOneOfJsonPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allOfToOneOfJsonPath.js","sourceRoot":"","sources":["../../src/lib/allOfToOneOfJsonPath.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/cliActions.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export declare function runAllOfToOneOf(opts: {
|
|
|
31
31
|
output?: string;
|
|
32
32
|
addDiscriminatorConst?: boolean;
|
|
33
33
|
ignoreSingleSpecialization?: boolean;
|
|
34
|
+
mergeNestedOneof?: boolean;
|
|
34
35
|
}, format: (doc: any, target?: string) => string, reader: () => Promise<string>): Promise<void>;
|
|
35
36
|
/**
|
|
36
37
|
* Seals object schemas to prevent additional properties.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliActions.d.ts","sourceRoot":"","sources":["../../src/lib/cliActions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cliActions.d.ts","sourceRoot":"","sources":["../../src/lib/cliActions.ts"],"names":[],"mappings":"AA2EA,wBAAsB,eAAe,CACnC,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,EACD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,EAC7C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,iBAiB9B;AAQD,wBAAsB,cAAc,CAClC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,EAC7C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,iBAsC9B;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACzB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,EAC7C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,iBAO9B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5H,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,EAC7C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,iBA0B9B;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EAC/E,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,EAC7C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,iBAY9B;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACzB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,EAC7C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,iBAuB9B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAC/C,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,EAC7C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,iBAa9B"}
|
package/dist/lib/cliActions.js
CHANGED
|
@@ -4,7 +4,7 @@ import YAML from "yaml";
|
|
|
4
4
|
import { optimizeAllOfComposition } from "./optimizeAllOfComposition.js";
|
|
5
5
|
import { removeUnusedSchemas } from "./removeUnusedSchemas.js";
|
|
6
6
|
import { removeFromOneOfByName, removeFromOneOfGlobally, } from "./removeFromOneOfByName.js";
|
|
7
|
-
import { allOfToOneOf } from "./
|
|
7
|
+
import { allOfToOneOf } from "./allOfToOneOfJsonPath.js";
|
|
8
8
|
import { sealSchema } from "./sealSchema.js";
|
|
9
9
|
import { cleanupDiscriminatorMappings } from "./cleanupDiscriminatorMappings.js";
|
|
10
10
|
import { removeDanglingRefs } from "./removeDanglingRefs.js";
|
|
@@ -151,6 +151,8 @@ export async function runAllOfToOneOf(opts, format, reader) {
|
|
|
151
151
|
const topts = {
|
|
152
152
|
addDiscriminatorConst: opts.addDiscriminatorConst !== false,
|
|
153
153
|
ignoreSingleSpecialization: Boolean(opts.ignoreSingleSpecialization),
|
|
154
|
+
mergeNestedOneOf: Boolean(opts.mergeNestedOneof),
|
|
155
|
+
onWarning: (msg) => console.warn(`[WARN] ${msg}`),
|
|
154
156
|
};
|
|
155
157
|
allOfToOneOf(doc, topts);
|
|
156
158
|
const afterSchemas = Object.keys(doc.components.schemas);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliActions.js","sourceRoot":"","sources":["../../src/lib/cliActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAiB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"cliActions.js","sourceRoot":"","sources":["../../src/lib/cliActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizeAllOfComposition.d.ts","sourceRoot":"","sources":["../../src/lib/optimizeAllOfComposition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"optimizeAllOfComposition.d.ts","sourceRoot":"","sources":["../../src/lib/optimizeAllOfComposition.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAqGtD"}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { refToName } from "./oasUtils.js";
|
|
2
|
-
|
|
3
|
-
let JSONPath = undefined;
|
|
4
|
-
try {
|
|
5
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
6
|
-
JSONPath = require("jsonpath-plus").JSONPath;
|
|
7
|
-
}
|
|
8
|
-
catch (e) {
|
|
9
|
-
JSONPath = undefined;
|
|
10
|
-
}
|
|
2
|
+
import { JSONPath } from "jsonpath-plus";
|
|
11
3
|
/**
|
|
12
4
|
* Optimize allOf composition globally across an OpenAPI document.
|
|
13
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizeAllOfComposition.js","sourceRoot":"","sources":["../../src/lib/optimizeAllOfComposition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,
|
|
1
|
+
{"version":3,"file":"optimizeAllOfComposition.js","sourceRoot":"","sources":["../../src/lib/optimizeAllOfComposition.ts"],"names":[],"mappings":"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"}
|