klasik 2.6.2 → 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
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":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,iDAA6C;AAO7C,MAAa,eAAgB,SAAQ,KAAK;IACxC,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,iBAAiB,CAAC;IAChC,CAAC;CACF;AATD,0CASC;AAED;;;GAGG;AACH,MAAa,UAAU;IAMrB;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,0BAAW,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CACJ,IAAS,EACT,YAA8B,EAC9B,UAA6B,EAAE;QAE/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QAEjC,6CAA6C;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEpC,0BAA0B;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEvC,iDAAiD;QACjD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;YACjC,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,GAAQ;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,GAAQ;QACzB,0CAA0C;QAC1C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;QAED,2CAA2C;QAC3C,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;YAErB,2CAA2C;YAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,GAAG,CAAC;YACb,CAAC;YAED,kCAAkC;YAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,gBAAgB;QAChB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,2CAA2C;QAC3C,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,GAAW;QAClC,6CAA6C;QAC7C,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5C,qEAAqE;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEpD,8BAA8B;QAC9B,0DAA0D;QAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzC,uDAAuD;QACvD,qFAAqF;QACrF,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;YACzB,kDAAkD;YAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;gBACvD,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,GAAG,KAAK,CAAC;oBAChB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CACvB,sBAAsB,GAAG,+BAA+B,EACxD,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,wDAAwD;QACxD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,eAAe,CACvB,mCAAmC,GAAG,MAAO,KAAe,CAAC,OAAO,EAAE,EACtE,GAAG,EACH,KAAc,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAElC,kDAAkD;QAClD,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEnC,yEAAyE;QACzE,wDAAwD;QACxD,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,wBAAwB,UAAU,EAAE,EAAE,CAAC;QACxD,CAAC;aAAM,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,kDAAkD;YAClD,OAAO,EAAE,IAAI,EAAE,wBAAwB,UAAU,EAAE,EAAE,CAAC;QACxD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,QAAiB;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAC1B,iDAAiD,CAClD,CAAC;QACF,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,GAAW;QACvB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;CACF;AA3MD,gCA2MC"}
|
package/package.json
CHANGED