klasik 2.6.3 → 2.6.4
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/bin/go-schema-gen
CHANGED
|
Binary file
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* - Deep clones to avoid mutations
|
|
12
12
|
* - Recursively traverses spec object
|
|
13
13
|
* - Promotes external schema refs to components/schemas
|
|
14
|
+
* - Promotes sibling schemas referenced via internal $ref within promoted schemas
|
|
14
15
|
*/
|
|
15
16
|
export interface RefInlinerOptions {
|
|
16
17
|
/** Base URL of the main spec (for error messages) */
|
|
@@ -57,6 +58,20 @@ export declare class RefInliner {
|
|
|
57
58
|
* @returns Inlined content
|
|
58
59
|
*/
|
|
59
60
|
private resolveAndInline;
|
|
61
|
+
/**
|
|
62
|
+
* Find internal schema $ref within promoted content and promote those
|
|
63
|
+
* sibling schemas from the same source document.
|
|
64
|
+
*
|
|
65
|
+
* When a schema from a sub-file is promoted, it may contain internal
|
|
66
|
+
* $ref like #/components/schemas/Sibling that point to other schemas
|
|
67
|
+
* in the same sub-file. Those siblings must also be promoted.
|
|
68
|
+
*/
|
|
69
|
+
private promoteSiblingSchemas;
|
|
70
|
+
/**
|
|
71
|
+
* Find all internal $ref pointing to schemas within an object
|
|
72
|
+
* Returns the schema names referenced via #/components/schemas/X or #/definitions/X
|
|
73
|
+
*/
|
|
74
|
+
private findInternalSchemaRefs;
|
|
60
75
|
/**
|
|
61
76
|
* Extract a schema name from a $ref fragment
|
|
62
77
|
* Matches patterns like /components/schemas/Name or /definitions/Name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-inliner.d.ts","sourceRoot":"","sources":["../../src/loaders/ref-inliner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ref-inliner.d.ts","sourceRoot":"","sources":["../../src/loaders/ref-inliner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,GAAG,EAAE,MAAM;aACX,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,eAAe,CAAmB;;IAQ1C;;;;;;OAMG;IACH,MAAM,CACJ,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,OAAO,GAAE,iBAAsB,GAC9B,GAAG;IA2BN;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAqClB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAoExB;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA0B9B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;CAG7C"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* - Deep clones to avoid mutations
|
|
13
13
|
* - Recursively traverses spec object
|
|
14
14
|
* - Promotes external schema refs to components/schemas
|
|
15
|
+
* - Promotes sibling schemas referenced via internal $ref within promoted schemas
|
|
15
16
|
*/
|
|
16
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
18
|
exports.RefInliner = exports.RefInlinerError = void 0;
|
|
@@ -116,25 +117,25 @@ class RefInliner {
|
|
|
116
117
|
const [filePart, fragment] = ref.split('#');
|
|
117
118
|
// Check if this ref points to a named schema that should be promoted
|
|
118
119
|
const schemaName = this.extractSchemaName(fragment);
|
|
119
|
-
// Try to get resolved content
|
|
120
|
-
|
|
121
|
-
let content = this.resolvedRefs.get(ref);
|
|
120
|
+
// Try to get resolved content (full document)
|
|
121
|
+
let fullDocument = this.resolvedRefs.get(ref);
|
|
122
122
|
// If not found with full ref, try finding by file part
|
|
123
123
|
// This handles cases where multiple refs point to same file with different fragments
|
|
124
|
-
if (!
|
|
125
|
-
// Look for any key that starts with the file part
|
|
124
|
+
if (!fullDocument && filePart) {
|
|
126
125
|
for (const [key, value] of this.resolvedRefs.entries()) {
|
|
127
126
|
const [keyFilePart] = key.split('#');
|
|
128
127
|
if (keyFilePart === filePart) {
|
|
129
|
-
|
|
128
|
+
fullDocument = value;
|
|
130
129
|
break;
|
|
131
130
|
}
|
|
132
131
|
}
|
|
133
132
|
}
|
|
134
133
|
// If still not found, throw error
|
|
135
|
-
if (!
|
|
134
|
+
if (!fullDocument) {
|
|
136
135
|
throw new RefInlinerError(`Cannot inline ref "${ref}": not found in resolved refs`, ref);
|
|
137
136
|
}
|
|
137
|
+
// Start with full document content
|
|
138
|
+
let content = fullDocument;
|
|
138
139
|
// If there's a fragment, resolve it within the document
|
|
139
140
|
if (fragment) {
|
|
140
141
|
try {
|
|
@@ -150,16 +151,72 @@ class RefInliner {
|
|
|
150
151
|
content = this.inlineRefs(content);
|
|
151
152
|
// If this ref points to a named schema, promote it to components/schemas
|
|
152
153
|
// and return an internal $ref instead of inline content
|
|
153
|
-
if (schemaName
|
|
154
|
-
this.promotedSchemas.
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
154
|
+
if (schemaName) {
|
|
155
|
+
if (!this.promotedSchemas.has(schemaName)) {
|
|
156
|
+
this.promotedSchemas.set(schemaName, content);
|
|
157
|
+
// Promote sibling schemas from the same document that are referenced
|
|
158
|
+
// via internal $ref (e.g., #/components/schemas/SiblingSchema)
|
|
159
|
+
this.promoteSiblingSchemas(content, fullDocument);
|
|
160
|
+
}
|
|
159
161
|
return { $ref: `#/components/schemas/${schemaName}` };
|
|
160
162
|
}
|
|
161
163
|
return content;
|
|
162
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Find internal schema $ref within promoted content and promote those
|
|
167
|
+
* sibling schemas from the same source document.
|
|
168
|
+
*
|
|
169
|
+
* When a schema from a sub-file is promoted, it may contain internal
|
|
170
|
+
* $ref like #/components/schemas/Sibling that point to other schemas
|
|
171
|
+
* in the same sub-file. Those siblings must also be promoted.
|
|
172
|
+
*/
|
|
173
|
+
promoteSiblingSchemas(content, fullDocument) {
|
|
174
|
+
// Find all internal schema refs in the content
|
|
175
|
+
const internalRefs = this.findInternalSchemaRefs(content);
|
|
176
|
+
for (const siblingName of internalRefs) {
|
|
177
|
+
// Skip if already promoted
|
|
178
|
+
if (this.promotedSchemas.has(siblingName)) {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
// Try to find the sibling in the source document's components/schemas or definitions
|
|
182
|
+
const siblingSchema = fullDocument?.components?.schemas?.[siblingName] ??
|
|
183
|
+
fullDocument?.definitions?.[siblingName];
|
|
184
|
+
if (siblingSchema) {
|
|
185
|
+
// Clone and inline external refs within the sibling
|
|
186
|
+
let processed = this.deepClone(siblingSchema);
|
|
187
|
+
processed = this.inlineRefs(processed);
|
|
188
|
+
this.promotedSchemas.set(siblingName, processed);
|
|
189
|
+
// Recursively promote siblings of this sibling
|
|
190
|
+
this.promoteSiblingSchemas(processed, fullDocument);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Find all internal $ref pointing to schemas within an object
|
|
196
|
+
* Returns the schema names referenced via #/components/schemas/X or #/definitions/X
|
|
197
|
+
*/
|
|
198
|
+
findInternalSchemaRefs(obj) {
|
|
199
|
+
const names = new Set();
|
|
200
|
+
const visit = (current) => {
|
|
201
|
+
if (current === null || typeof current !== 'object') {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (typeof current.$ref === 'string' && current.$ref.startsWith('#')) {
|
|
205
|
+
const name = this.extractSchemaName(current.$ref.substring(1));
|
|
206
|
+
if (name) {
|
|
207
|
+
names.add(name);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (Array.isArray(current)) {
|
|
211
|
+
current.forEach(visit);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
Object.values(current).forEach(visit);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
visit(obj);
|
|
218
|
+
return Array.from(names);
|
|
219
|
+
}
|
|
163
220
|
/**
|
|
164
221
|
* Extract a schema name from a $ref fragment
|
|
165
222
|
* Matches patterns like /components/schemas/Name or /definitions/Name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-inliner.js","sourceRoot":"","sources":["../../src/loaders/ref-inliner.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"ref-inliner.js","sourceRoot":"","sources":["../../src/loaders/ref-inliner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED