@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
package/README.md
CHANGED
|
@@ -76,23 +76,25 @@ Specifically, it:
|
|
|
76
76
|
2. Finds concrete schemas that extend the base via allOf
|
|
77
77
|
3. Optionally adds a const property to each concrete schema matching its discriminator value (enabled by default)
|
|
78
78
|
4. Creates a new oneOf wrapper schema containing all concrete types
|
|
79
|
-
5. Replaces references to the base schema with the wrapper schema (
|
|
79
|
+
5. Replaces references to the base schema with the wrapper schema (outside of allOf composition contexts)
|
|
80
|
+
6. Removes discriminators from base schemas that received wrappers
|
|
81
|
+
7. Optionally merges nested oneOf schemas by inlining references to schemas that only contain oneOf
|
|
80
82
|
|
|
81
83
|
```
|
|
82
84
|
oas-utils allof-to-oneof <input.yaml> -o output.yaml
|
|
83
|
-
# Optionally remove discriminator from base schema
|
|
84
|
-
oas-utils allof-to-oneof <input.yaml> -o output.yaml --remove-discriminator-from-base
|
|
85
85
|
# Optionally skip adding const to specialization schemas
|
|
86
86
|
oas-utils allof-to-oneof <input.yaml> -o output.yaml --no-add-discriminator-const
|
|
87
87
|
# Optionally skip transformation if only one specialization is found
|
|
88
88
|
oas-utils allof-to-oneof <input.yaml> -o output.yaml --ignore-single-specialization
|
|
89
|
+
# Optionally merge nested oneOf schemas
|
|
90
|
+
oas-utils allof-to-oneof <input.yaml> -o output.yaml --merge-nested-oneof
|
|
89
91
|
```
|
|
90
92
|
|
|
91
93
|
Options:
|
|
92
94
|
- -o, --output: write result to this file (defaults to stdout).
|
|
93
|
-
- --remove-discriminator-from-base: remove the discriminator from base schemas after conversion.
|
|
94
95
|
- --no-add-discriminator-const: do not add const property with discriminator value to specialization schemas.
|
|
95
96
|
- --ignore-single-specialization: skip oneOf transformation if only one specialization is found (useful for bases with only one concrete implementation).
|
|
97
|
+
- --merge-nested-oneof: merge nested oneOf schemas by inlining references to schemas that only contain oneOf.
|
|
96
98
|
|
|
97
99
|
Example transformation (with addDiscriminatorConst enabled, the default):
|
|
98
100
|
- Base schema `Animal` with discriminator `type` and mapping `{Cat: ..., Dog: ...}`
|
|
@@ -195,7 +197,6 @@ decorators:
|
|
|
195
197
|
|
|
196
198
|
# Convert allOf + discriminator to oneOf + discriminator
|
|
197
199
|
oas-utils/allof-to-oneof:
|
|
198
|
-
removeDiscriminatorFromBase: false
|
|
199
200
|
addDiscriminatorConst: true
|
|
200
201
|
ignoreSingleSpecialization: false
|
|
201
202
|
|
|
@@ -233,7 +234,7 @@ import {
|
|
|
233
234
|
removeUnusedSchemas(doc, { keep: ['CommonError'], aggressive: true });
|
|
234
235
|
|
|
235
236
|
// Convert allOf + discriminator to oneOf + discriminator
|
|
236
|
-
allOfToOneOf(doc, {
|
|
237
|
+
allOfToOneOf(doc, { addDiscriminatorConst: true, mergeNestedOneOf: false });
|
|
237
238
|
|
|
238
239
|
// Clean up discriminator mappings
|
|
239
240
|
const result = cleanupDiscriminatorMappings(doc);
|
package/dist/cli.js
CHANGED
|
@@ -60,9 +60,9 @@ program
|
|
|
60
60
|
.description("Convert allOf + discriminator patterns to oneOf + discriminator")
|
|
61
61
|
.argument("[input]", "Path to input OpenAPI file (YAML or JSON). If omitted, reads from stdin")
|
|
62
62
|
.option("-o, --output <file>", "Write result to this file (defaults to stdout)")
|
|
63
|
-
.option("--remove-discriminator-from-base", "Remove discriminator from base schemas after conversion", false)
|
|
64
63
|
.option("--no-add-discriminator-const", "Do not add const property with discriminator value to specialization schemas", true)
|
|
65
64
|
.option("--ignore-single-specialization", "Skip oneOf transformation if only one specialization is found", false)
|
|
65
|
+
.option("--merge-nested-oneof", "Merge nested oneOf schemas by inlining references to schemas that only contain oneOf", false)
|
|
66
66
|
.action(async (input, opts) => {
|
|
67
67
|
try {
|
|
68
68
|
await runAllOfToOneOf(opts, format, () => reader(input));
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './lib/removeUnusedSchemas.js';
|
|
2
2
|
export * from './lib/removeFromOneOfByName.js';
|
|
3
3
|
export * from './lib/optimizeAllOfComposition.js';
|
|
4
|
-
export * from './lib/
|
|
4
|
+
export * from './lib/allOfToOneOfJsonPath.js';
|
|
5
5
|
export * from './lib/sealSchema.js';
|
|
6
6
|
export * from './lib/oasUtils.js';
|
|
7
7
|
export * from './lib/cleanupDiscriminatorMappings.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './lib/removeUnusedSchemas.js';
|
|
2
2
|
export * from './lib/removeFromOneOfByName.js';
|
|
3
3
|
export * from './lib/optimizeAllOfComposition.js';
|
|
4
|
-
export * from './lib/
|
|
4
|
+
export * from './lib/allOfToOneOfJsonPath.js';
|
|
5
5
|
export * from './lib/sealSchema.js';
|
|
6
6
|
export * from './lib/oasUtils.js';
|
|
7
7
|
export * from './lib/cleanupDiscriminatorMappings.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common interface for allOf to oneOf transformation implementations
|
|
3
|
+
*/
|
|
4
|
+
export interface AllOfToOneOfOptions {
|
|
5
|
+
/** If true, add const property with discriminator value to specialization schemas (default: true) */
|
|
6
|
+
addDiscriminatorConst?: boolean;
|
|
7
|
+
/** If true, skip oneOf transformation if only one specialization is found (default: false) */
|
|
8
|
+
ignoreSingleSpecialization?: boolean;
|
|
9
|
+
/** If true, merge nested oneOf schemas by inlining references to schemas that only contain oneOf (default: false) */
|
|
10
|
+
mergeNestedOneOf?: boolean;
|
|
11
|
+
/** Optional callback to receive warnings during transformation. If not provided, warnings are silently ignored. */
|
|
12
|
+
onWarning?: (message: string) => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Transforms allOf + discriminator patterns to oneOf + discriminator in OpenAPI documents.
|
|
16
|
+
*
|
|
17
|
+
* @param doc - The OpenAPI document to transform (will be modified in-place)
|
|
18
|
+
* @param opts - Optional configuration for the transformation
|
|
19
|
+
* @returns The transformed document (same reference as input)
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { allOfToOneOf } from "./lib/allOfToOneOfJsonPath.js";
|
|
24
|
+
*
|
|
25
|
+
* const doc = { ... }; // OpenAPI document
|
|
26
|
+
* const transformed = allOfToOneOf(doc, {
|
|
27
|
+
* addDiscriminatorConst: true,
|
|
28
|
+
* ignoreSingleSpecialization: false,
|
|
29
|
+
* mergeNestedOneOf: false
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export interface AllOfToOneOfTransform {
|
|
34
|
+
(doc: any, opts?: AllOfToOneOfOptions): any;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=allOfToOneOfInterface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allOfToOneOfInterface.d.ts","sourceRoot":"","sources":["../../src/lib/allOfToOneOfInterface.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,WAAW,mBAAmB;IAClC,qGAAqG;IACrG,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,8FAA8F;IAC9F,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qHAAqH;IACrH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mHAAmH;IACnH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,qBAAqB;IACpC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,GAAG,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allOfToOneOfInterface.js","sourceRoot":"","sources":["../../src/lib/allOfToOneOfInterface.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { AllOfToOneOfOptions } from './allOfToOneOfInterface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Third implementation of allOfToOneOf using JSONPath library.
|
|
4
|
+
*
|
|
5
|
+
* This implementation focuses on using JSONPath queries for:
|
|
6
|
+
* - Finding all allOf relationships
|
|
7
|
+
* - Locating references to schemas
|
|
8
|
+
* - Replacing references throughout the document
|
|
9
|
+
*
|
|
10
|
+
* Algorithm:
|
|
11
|
+
* 1. Find discriminator parents (schemas with discriminator.mapping with >1 entry)
|
|
12
|
+
* 2. Build inheritance graph using JSONPath to find allOf relationships
|
|
13
|
+
* 3. For each discriminator parent:
|
|
14
|
+
* - Find all references using JSONPath
|
|
15
|
+
* - Check if referenced outside composition contexts
|
|
16
|
+
* - If yes, create polymorphic wrapper
|
|
17
|
+
* 4. Rewire references using JSONPath
|
|
18
|
+
* 5. Remove discriminators from parents
|
|
19
|
+
* 6. Optionally add const constraints to children
|
|
20
|
+
* 7. Handle nested hierarchies (chain wrappers)
|
|
21
|
+
*/
|
|
22
|
+
interface SchemaReference {
|
|
23
|
+
$ref: string;
|
|
24
|
+
}
|
|
25
|
+
interface DiscriminatorObject {
|
|
26
|
+
propertyName: string;
|
|
27
|
+
mapping: Record<string, string>;
|
|
28
|
+
}
|
|
29
|
+
interface SchemaObject {
|
|
30
|
+
type?: string;
|
|
31
|
+
properties?: Record<string, unknown>;
|
|
32
|
+
allOf?: Array<SchemaReference | SchemaObject>;
|
|
33
|
+
oneOf?: Array<SchemaReference | SchemaObject>;
|
|
34
|
+
anyOf?: Array<SchemaReference | SchemaObject>;
|
|
35
|
+
discriminator?: Partial<DiscriminatorObject>;
|
|
36
|
+
[key: string]: unknown;
|
|
37
|
+
}
|
|
38
|
+
interface ComponentsObject {
|
|
39
|
+
schemas?: Record<string, SchemaObject>;
|
|
40
|
+
requestBodies?: Record<string, unknown>;
|
|
41
|
+
responses?: Record<string, unknown>;
|
|
42
|
+
parameters?: Record<string, unknown>;
|
|
43
|
+
callbacks?: Record<string, unknown>;
|
|
44
|
+
links?: Record<string, unknown>;
|
|
45
|
+
headers?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
interface OpenAPIDocument {
|
|
48
|
+
openapi?: string;
|
|
49
|
+
components?: ComponentsObject;
|
|
50
|
+
paths?: Record<string, unknown>;
|
|
51
|
+
webhooks?: Record<string, unknown>;
|
|
52
|
+
[key: string]: unknown;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Main transformation function.
|
|
56
|
+
* Converts allOf + discriminator patterns to oneOf wrappers using JSONPath.
|
|
57
|
+
*/
|
|
58
|
+
export declare function allOfToOneOf(doc: OpenAPIDocument, opts?: AllOfToOneOfOptions): OpenAPIDocument;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=allOfToOneOfJsonPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allOfToOneOfJsonPath.d.ts","sourceRoot":"","sources":["../../src/lib/allOfToOneOfJsonPath.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA0nBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,GAAE,mBAAwB,GAAG,eAAe,CAwBlG"}
|