klasik 2.6.1 → 2.6.3
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 +0 -0
- package/dist/loaders/ref-inliner.d.ts +9 -0
- package/dist/loaders/ref-inliner.d.ts.map +1 -1
- package/dist/loaders/ref-inliner.js +44 -2
- package/dist/loaders/ref-inliner.js.map +1 -1
- package/dist/loaders/ref-resolver.d.ts +1 -0
- package/dist/loaders/ref-resolver.d.ts.map +1 -1
- package/dist/loaders/ref-resolver.js +10 -2
- package/dist/loaders/ref-resolver.js.map +1 -1
- package/package.json +1 -1
package/dist/bin/go-schema-gen
CHANGED
|
Binary file
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - Handles nested refs (ref within ref)
|
|
11
11
|
* - Deep clones to avoid mutations
|
|
12
12
|
* - Recursively traverses spec object
|
|
13
|
+
* - Promotes external schema refs to components/schemas
|
|
13
14
|
*/
|
|
14
15
|
export interface RefInlinerOptions {
|
|
15
16
|
/** Base URL of the main spec (for error messages) */
|
|
@@ -28,6 +29,7 @@ export declare class RefInliner {
|
|
|
28
29
|
private resolvedRefs;
|
|
29
30
|
private refResolver;
|
|
30
31
|
private baseUrl?;
|
|
32
|
+
private promotedSchemas;
|
|
31
33
|
constructor();
|
|
32
34
|
/**
|
|
33
35
|
* Inline all external $ref in a spec
|
|
@@ -55,6 +57,13 @@ export declare class RefInliner {
|
|
|
55
57
|
* @returns Inlined content
|
|
56
58
|
*/
|
|
57
59
|
private resolveAndInline;
|
|
60
|
+
/**
|
|
61
|
+
* Extract a schema name from a $ref fragment
|
|
62
|
+
* Matches patterns like /components/schemas/Name or /definitions/Name
|
|
63
|
+
* @param fragment The fragment part of the ref (after #)
|
|
64
|
+
* @returns Schema name or null if not a schema ref
|
|
65
|
+
*/
|
|
66
|
+
private extractSchemaName;
|
|
58
67
|
/**
|
|
59
68
|
* Check if a ref is external (doesn't start with #)
|
|
60
69
|
* @param ref The $ref string
|
|
@@ -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;;;;;;;;;;;;;GAaG;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;IAgExB;;;;;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"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* - Handles nested refs (ref within ref)
|
|
12
12
|
* - Deep clones to avoid mutations
|
|
13
13
|
* - Recursively traverses spec object
|
|
14
|
+
* - Promotes external schema refs to components/schemas
|
|
14
15
|
*/
|
|
15
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
17
|
exports.RefInliner = exports.RefInlinerError = void 0;
|
|
@@ -32,6 +33,7 @@ class RefInliner {
|
|
|
32
33
|
constructor() {
|
|
33
34
|
this.resolvedRefs = new Map();
|
|
34
35
|
this.refResolver = new ref_resolver_1.RefResolver();
|
|
36
|
+
this.promotedSchemas = new Map();
|
|
35
37
|
}
|
|
36
38
|
/**
|
|
37
39
|
* Inline all external $ref in a spec
|
|
@@ -43,10 +45,24 @@ class RefInliner {
|
|
|
43
45
|
inline(spec, resolvedRefs, options = {}) {
|
|
44
46
|
this.resolvedRefs = resolvedRefs;
|
|
45
47
|
this.baseUrl = options.baseUrl;
|
|
48
|
+
this.promotedSchemas = new Map();
|
|
46
49
|
// Deep clone to avoid mutating original spec
|
|
47
50
|
const cloned = this.deepClone(spec);
|
|
48
51
|
// Recursively inline refs
|
|
49
|
-
|
|
52
|
+
const result = this.inlineRefs(cloned);
|
|
53
|
+
// Merge promoted schemas into components/schemas
|
|
54
|
+
if (this.promotedSchemas.size > 0) {
|
|
55
|
+
if (!result.components) {
|
|
56
|
+
result.components = {};
|
|
57
|
+
}
|
|
58
|
+
if (!result.components.schemas) {
|
|
59
|
+
result.components.schemas = {};
|
|
60
|
+
}
|
|
61
|
+
for (const [name, schema] of this.promotedSchemas) {
|
|
62
|
+
result.components.schemas[name] = schema;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
50
66
|
}
|
|
51
67
|
/**
|
|
52
68
|
* Deep clone an object using JSON serialization
|
|
@@ -98,6 +114,8 @@ class RefInliner {
|
|
|
98
114
|
resolveAndInline(ref) {
|
|
99
115
|
// Split ref into file part and fragment part
|
|
100
116
|
const [filePart, fragment] = ref.split('#');
|
|
117
|
+
// Check if this ref points to a named schema that should be promoted
|
|
118
|
+
const schemaName = this.extractSchemaName(fragment);
|
|
101
119
|
// Try to get resolved content
|
|
102
120
|
// RefResolver stores content with the original ref as key
|
|
103
121
|
let content = this.resolvedRefs.get(ref);
|
|
@@ -129,7 +147,31 @@ class RefInliner {
|
|
|
129
147
|
// Clone content to avoid mutations
|
|
130
148
|
content = this.deepClone(content);
|
|
131
149
|
// Recursively inline any refs within this content
|
|
132
|
-
|
|
150
|
+
content = this.inlineRefs(content);
|
|
151
|
+
// If this ref points to a named schema, promote it to components/schemas
|
|
152
|
+
// and return an internal $ref instead of inline content
|
|
153
|
+
if (schemaName && !this.promotedSchemas.has(schemaName)) {
|
|
154
|
+
this.promotedSchemas.set(schemaName, content);
|
|
155
|
+
return { $ref: `#/components/schemas/${schemaName}` };
|
|
156
|
+
}
|
|
157
|
+
else if (schemaName && this.promotedSchemas.has(schemaName)) {
|
|
158
|
+
// Already promoted — just return the internal ref
|
|
159
|
+
return { $ref: `#/components/schemas/${schemaName}` };
|
|
160
|
+
}
|
|
161
|
+
return content;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Extract a schema name from a $ref fragment
|
|
165
|
+
* Matches patterns like /components/schemas/Name or /definitions/Name
|
|
166
|
+
* @param fragment The fragment part of the ref (after #)
|
|
167
|
+
* @returns Schema name or null if not a schema ref
|
|
168
|
+
*/
|
|
169
|
+
extractSchemaName(fragment) {
|
|
170
|
+
if (!fragment) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
const match = fragment.match(/\/(?:components\/schemas|definitions)\/([^/]+)$/);
|
|
174
|
+
return match ? match[1] : null;
|
|
133
175
|
}
|
|
134
176
|
/**
|
|
135
177
|
* Check if a ref is external (doesn't start with #)
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-resolver.d.ts","sourceRoot":"","sources":["../../src/loaders/ref-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAc,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3C,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,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,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,WAAW,CAAc;;
|
|
1
|
+
{"version":3,"file":"ref-resolver.d.ts","sourceRoot":"","sources":["../../src/loaders/ref-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAc,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3C,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,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,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,oBAAoB,CAAmB;;IAS/C;;;;;OAKG;IACG,mBAAmB,CACvB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAmB5B;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE;IAgCpC;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;;;;;OAMG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM;IAiBtE;;;;;;;OAOG;YACW,UAAU;IAoExB;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAI5C;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG;IAiChD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
|
|
@@ -62,6 +62,7 @@ class RefResolver {
|
|
|
62
62
|
this.specLoader = new spec_loader_1.SpecLoader();
|
|
63
63
|
this.resolvedRefs = new Map();
|
|
64
64
|
this.visitedUrls = new Set();
|
|
65
|
+
this.resolvedUrlToContent = new Map();
|
|
65
66
|
}
|
|
66
67
|
/**
|
|
67
68
|
* Resolve all external $ref in a spec
|
|
@@ -74,6 +75,7 @@ class RefResolver {
|
|
|
74
75
|
// Reset state
|
|
75
76
|
this.resolvedRefs = new Map();
|
|
76
77
|
this.visitedUrls = new Set();
|
|
78
|
+
this.resolvedUrlToContent = new Map();
|
|
77
79
|
// Find all external refs
|
|
78
80
|
const externalRefs = this.findExternalRefs(spec);
|
|
79
81
|
// Resolve each ref
|
|
@@ -164,8 +166,12 @@ class RefResolver {
|
|
|
164
166
|
const isRemote = baseUrl.startsWith('http://') || baseUrl.startsWith('https://');
|
|
165
167
|
// Resolve to absolute URL
|
|
166
168
|
const resolvedUrl = this.resolveRefUrl(ref, baseUrl, isRemote);
|
|
167
|
-
// Skip if already visited
|
|
169
|
+
// Skip if already visited — but still store under this ref key
|
|
168
170
|
if (this.visitedUrls.has(resolvedUrl)) {
|
|
171
|
+
const existingContent = this.resolvedUrlToContent.get(resolvedUrl);
|
|
172
|
+
if (existingContent && !this.resolvedRefs.has(ref)) {
|
|
173
|
+
this.resolvedRefs.set(ref, existingContent);
|
|
174
|
+
}
|
|
169
175
|
return;
|
|
170
176
|
}
|
|
171
177
|
this.visitedUrls.add(resolvedUrl);
|
|
@@ -175,8 +181,9 @@ class RefResolver {
|
|
|
175
181
|
url: resolvedUrl,
|
|
176
182
|
...options.loaderOptions,
|
|
177
183
|
});
|
|
178
|
-
// Store resolved content
|
|
184
|
+
// Store resolved content (by original ref and by resolved URL)
|
|
179
185
|
this.resolvedRefs.set(ref, content);
|
|
186
|
+
this.resolvedUrlToContent.set(resolvedUrl, content);
|
|
180
187
|
// Find nested external refs in this file
|
|
181
188
|
const nestedRefs = this.findExternalRefs(content);
|
|
182
189
|
// Recursively resolve nested refs
|
|
@@ -231,6 +238,7 @@ class RefResolver {
|
|
|
231
238
|
clear() {
|
|
232
239
|
this.resolvedRefs.clear();
|
|
233
240
|
this.visitedUrls.clear();
|
|
241
|
+
this.resolvedUrlToContent.clear();
|
|
234
242
|
}
|
|
235
243
|
}
|
|
236
244
|
exports.RefResolver = RefResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-resolver.js","sourceRoot":"","sources":["../../src/loaders/ref-resolver.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAC7B,+CAA8D;AAW9D,MAAa,gBAAiB,SAAQ,KAAK;IACzC,YACE,OAAe,EACC,GAAW,EACX,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,QAAG,GAAH,GAAG,CAAQ;QACX,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AATD,4CASC;AAED;;;GAGG;AACH,MAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"ref-resolver.js","sourceRoot":"","sources":["../../src/loaders/ref-resolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED