@kubb/plugin-oas 0.0.0-canary-20251103125929 → 0.0.0-canary-20251103132818
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/{SchemaGenerator-B8Reay1m.cjs → SchemaGenerator-RnBn6EoD.cjs} +2 -2
- package/dist/{SchemaGenerator-B8Reay1m.cjs.map → SchemaGenerator-RnBn6EoD.cjs.map} +1 -1
- package/dist/{SchemaGenerator-ChoBQWm5.js → SchemaGenerator-bd3P5CUh.js} +2 -2
- package/dist/{SchemaGenerator-ChoBQWm5.js.map → SchemaGenerator-bd3P5CUh.js.map} +1 -1
- package/dist/getSchemas-32BHoMO-.js +100 -0
- package/dist/getSchemas-32BHoMO-.js.map +1 -0
- package/dist/getSchemas-Cl0TZ4XY.cjs +113 -0
- package/dist/getSchemas-Cl0TZ4XY.cjs.map +1 -0
- package/dist/hooks.cjs +2 -2
- package/dist/hooks.js +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.js +2 -2
- package/dist/utils.cjs +1 -1
- package/dist/utils.d.cts +4 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +1 -1
- package/package.json +3 -3
- package/src/utils/getSchemas.ts +88 -14
- package/dist/getSchemas-CP_YS4_2.cjs +0 -68
- package/dist/getSchemas-CP_YS4_2.cjs.map +0 -1
- package/dist/getSchemas-CTi8zYew.js +0 -55
- package/dist/getSchemas-CTi8zYew.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const require_SchemaGenerator = require('./SchemaGenerator-
|
|
2
|
+
const require_SchemaGenerator = require('./SchemaGenerator-RnBn6EoD.cjs');
|
|
3
3
|
const require_generators = require('./generators-udGOxdUV.cjs');
|
|
4
4
|
require('./getFooter-DPh4lxBH.cjs');
|
|
5
5
|
const require_SchemaMapper = require('./SchemaMapper-BUV8vhg0.cjs');
|
|
6
|
-
require('./getSchemas-
|
|
6
|
+
require('./getSchemas-Cl0TZ4XY.cjs');
|
|
7
7
|
const require_parseFromConfig = require('./parseFromConfig-EjsCZ0-8.cjs');
|
|
8
8
|
let __kubb_core = require("@kubb/core");
|
|
9
9
|
__kubb_core = require_chunk.__toESM(__kubb_core);
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as pLimit, i as buildSchema, n as buildOperation, r as buildOperations, t as SchemaGenerator } from "./SchemaGenerator-
|
|
1
|
+
import { a as pLimit, i as buildSchema, n as buildOperation, r as buildOperations, t as SchemaGenerator } from "./SchemaGenerator-bd3P5CUh.js";
|
|
2
2
|
import { t as jsonGenerator } from "./generators-CJDEf8Kn.js";
|
|
3
3
|
import "./getFooter-CV73pVXj.js";
|
|
4
4
|
import { n as schemaKeywords, t as isKeyword } from "./SchemaMapper-D30tqRoX.js";
|
|
5
|
-
import "./getSchemas-
|
|
5
|
+
import "./getSchemas-32BHoMO-.js";
|
|
6
6
|
import { t as parseFromConfig } from "./parseFromConfig-BkUoWC2U.js";
|
|
7
7
|
import { BaseGenerator, createPlugin, getMode } from "@kubb/core";
|
|
8
8
|
import transformers, { camelCase } from "@kubb/core/transformers";
|
package/dist/utils.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
2
|
const require_getFooter = require('./getFooter-DPh4lxBH.cjs');
|
|
3
|
-
const require_getSchemas = require('./getSchemas-
|
|
3
|
+
const require_getSchemas = require('./getSchemas-Cl0TZ4XY.cjs');
|
|
4
4
|
const require_parseFromConfig = require('./parseFromConfig-EjsCZ0-8.cjs');
|
|
5
5
|
let __kubb_core_transformers = require("@kubb/core/transformers");
|
|
6
6
|
__kubb_core_transformers = require_chunk.__toESM(__kubb_core_transformers);
|
package/dist/utils.d.cts
CHANGED
|
@@ -105,6 +105,10 @@ type GetSchemasProps = {
|
|
|
105
105
|
contentType?: contentType;
|
|
106
106
|
includes?: Mode[];
|
|
107
107
|
};
|
|
108
|
+
/**
|
|
109
|
+
* Collect schemas from OpenAPI components (schemas, responses, requestBodies)
|
|
110
|
+
* and return them in dependency order.
|
|
111
|
+
*/
|
|
108
112
|
declare function getSchemas({
|
|
109
113
|
oas,
|
|
110
114
|
contentType,
|
package/dist/utils.d.ts
CHANGED
|
@@ -105,6 +105,10 @@ type GetSchemasProps = {
|
|
|
105
105
|
contentType?: contentType;
|
|
106
106
|
includes?: Mode[];
|
|
107
107
|
};
|
|
108
|
+
/**
|
|
109
|
+
* Collect schemas from OpenAPI components (schemas, responses, requestBodies)
|
|
110
|
+
* and return them in dependency order.
|
|
111
|
+
*/
|
|
108
112
|
declare function getSchemas({
|
|
109
113
|
oas,
|
|
110
114
|
contentType,
|
package/dist/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as getBanner, t as getFooter } from "./getFooter-CV73pVXj.js";
|
|
2
|
-
import { n as getSchemaFactory, t as getSchemas } from "./getSchemas-
|
|
2
|
+
import { n as getSchemaFactory, t as getSchemas } from "./getSchemas-32BHoMO-.js";
|
|
3
3
|
import { t as parseFromConfig } from "./parseFromConfig-BkUoWC2U.js";
|
|
4
4
|
import transformers, { camelCase, isValidVarName } from "@kubb/core/transformers";
|
|
5
5
|
import { URLPath } from "@kubb/core/utils";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/plugin-oas",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-20251103132818",
|
|
4
4
|
"description": "OpenAPI Specification (OAS) plugin for Kubb, providing core functionality for parsing and processing OpenAPI/Swagger schemas for code generation.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"openapi",
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
"@stoplight/yaml": "^4.3.0",
|
|
84
84
|
"p-limit": "^7.2.0",
|
|
85
85
|
"remeda": "^2.32.0",
|
|
86
|
-
"@kubb/core": "0.0.0-canary-
|
|
87
|
-
"@kubb/oas": "0.0.0-canary-
|
|
86
|
+
"@kubb/core": "0.0.0-canary-20251103132818",
|
|
87
|
+
"@kubb/oas": "0.0.0-canary-20251103132818"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {},
|
|
90
90
|
"peerDependencies": {
|
package/src/utils/getSchemas.ts
CHANGED
|
@@ -8,9 +8,82 @@ type GetSchemasProps = {
|
|
|
8
8
|
includes?: Mode[]
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Collect all schema $ref dependencies recursively.
|
|
13
|
+
*/
|
|
14
|
+
function collectRefs(schema: unknown, refs = new Set<string>()): Set<string> {
|
|
15
|
+
if (Array.isArray(schema)) {
|
|
16
|
+
for (const item of schema) {
|
|
17
|
+
collectRefs(item, refs)
|
|
18
|
+
}
|
|
19
|
+
return refs
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (schema && typeof schema === 'object') {
|
|
23
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
24
|
+
if (key === '$ref' && typeof value === 'string') {
|
|
25
|
+
const match = value.match(/^#\/components\/schemas\/(.+)$/)
|
|
26
|
+
if (match) {
|
|
27
|
+
refs.add(match[1]!)
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
collectRefs(value, refs)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return refs
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Sort schemas topologically so referenced schemas appear first.
|
|
40
|
+
*/
|
|
41
|
+
function sortSchemas(schemas: Record<string, OasTypes.SchemaObject>): Record<string, OasTypes.SchemaObject> {
|
|
42
|
+
const deps = new Map<string, string[]>()
|
|
43
|
+
|
|
44
|
+
for (const [name, schema] of Object.entries(schemas)) {
|
|
45
|
+
deps.set(name, Array.from(collectRefs(schema)))
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const sorted: string[] = []
|
|
49
|
+
const visited = new Set<string>()
|
|
50
|
+
|
|
51
|
+
function visit(name: string, stack = new Set<string>()) {
|
|
52
|
+
if (visited.has(name)) {
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
if (stack.has(name)) {
|
|
56
|
+
return
|
|
57
|
+
} // circular refs, ignore
|
|
58
|
+
stack.add(name)
|
|
59
|
+
const children = deps.get(name) || []
|
|
60
|
+
for (const child of children) {
|
|
61
|
+
if (deps.has(child)) {
|
|
62
|
+
visit(child, stack)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
stack.delete(name)
|
|
66
|
+
visited.add(name)
|
|
67
|
+
sorted.push(name)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
for (const name of Object.keys(schemas)) {
|
|
71
|
+
visit(name)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const sortedSchemas: Record<string, OasTypes.SchemaObject> = {}
|
|
75
|
+
for (const name of sorted) {
|
|
76
|
+
sortedSchemas[name] = schemas[name]!
|
|
77
|
+
}
|
|
78
|
+
return sortedSchemas
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Collect schemas from OpenAPI components (schemas, responses, requestBodies)
|
|
83
|
+
* and return them in dependency order.
|
|
84
|
+
*/
|
|
11
85
|
export function getSchemas({ oas, contentType, includes = ['schemas', 'requestBodies', 'responses'] }: GetSchemasProps): Record<string, OasTypes.SchemaObject> {
|
|
12
86
|
const components = oas.getDefinition().components
|
|
13
|
-
|
|
14
87
|
let schemas: Record<string, OasTypes.SchemaObject> = {}
|
|
15
88
|
|
|
16
89
|
if (includes.includes('schemas')) {
|
|
@@ -20,26 +93,27 @@ export function getSchemas({ oas, contentType, includes = ['schemas', 'requestBo
|
|
|
20
93
|
}
|
|
21
94
|
}
|
|
22
95
|
|
|
23
|
-
const requestBodies = components?.requestBodies || {}
|
|
24
96
|
if (includes.includes('responses')) {
|
|
25
97
|
const responses = components?.responses || {}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (
|
|
29
|
-
const firstContentType = Object.keys(
|
|
30
|
-
schemas[name] =
|
|
98
|
+
for (const [name, response] of Object.entries(responses)) {
|
|
99
|
+
const r = response as OasTypes.ResponseObject
|
|
100
|
+
if (r.content && !schemas[name]) {
|
|
101
|
+
const firstContentType = Object.keys(r.content)[0] || 'application/json'
|
|
102
|
+
schemas[name] = r.content?.[contentType || firstContentType]?.schema as OasTypes.SchemaObject
|
|
31
103
|
}
|
|
32
|
-
}
|
|
104
|
+
}
|
|
33
105
|
}
|
|
34
106
|
|
|
35
107
|
if (includes.includes('requestBodies')) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
108
|
+
const requestBodies = components?.requestBodies || {}
|
|
109
|
+
for (const [name, request] of Object.entries(requestBodies)) {
|
|
110
|
+
const r = request as OasTypes.RequestBodyObject
|
|
111
|
+
if (r.content && !schemas[name]) {
|
|
112
|
+
const firstContentType = Object.keys(r.content)[0] || 'application/json'
|
|
113
|
+
schemas[name] = r.content?.[contentType || firstContentType]?.schema as OasTypes.SchemaObject
|
|
40
114
|
}
|
|
41
|
-
}
|
|
115
|
+
}
|
|
42
116
|
}
|
|
43
117
|
|
|
44
|
-
return schemas
|
|
118
|
+
return sortSchemas(schemas)
|
|
45
119
|
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
let __kubb_oas = require("@kubb/oas");
|
|
3
|
-
__kubb_oas = require_chunk.__toESM(__kubb_oas);
|
|
4
|
-
|
|
5
|
-
//#region src/utils/getSchemaFactory.ts
|
|
6
|
-
/**
|
|
7
|
-
* Creates a factory function that generates a versioned OpenAPI schema result.
|
|
8
|
-
*
|
|
9
|
-
* The returned function accepts an optional schema object and produces a {@link SchemaResult} containing the dereferenced schema and the OpenAPI version ('3.0' or '3.1').
|
|
10
|
-
*
|
|
11
|
-
* @returns A function that takes an optional schema and returns a versioned schema result.
|
|
12
|
-
*/
|
|
13
|
-
function getSchemaFactory(oas) {
|
|
14
|
-
return (schema) => {
|
|
15
|
-
const version = (0, __kubb_oas.isOpenApiV3_1Document)(oas.api) ? "3.1" : "3.0";
|
|
16
|
-
return {
|
|
17
|
-
schemaObject: oas.dereferenceWithRef(schema),
|
|
18
|
-
version
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region src/utils/getSchemas.ts
|
|
25
|
-
function getSchemas({ oas, contentType, includes = [
|
|
26
|
-
"schemas",
|
|
27
|
-
"requestBodies",
|
|
28
|
-
"responses"
|
|
29
|
-
] }) {
|
|
30
|
-
const components = oas.getDefinition().components;
|
|
31
|
-
let schemas = {};
|
|
32
|
-
if (includes.includes("schemas")) schemas = {
|
|
33
|
-
...schemas,
|
|
34
|
-
...components?.schemas || {}
|
|
35
|
-
};
|
|
36
|
-
const requestBodies = components?.requestBodies || {};
|
|
37
|
-
if (includes.includes("responses")) {
|
|
38
|
-
const responses = components?.responses || {};
|
|
39
|
-
Object.entries(responses).forEach(([name, response]) => {
|
|
40
|
-
if (response.content && !schemas[name]) {
|
|
41
|
-
const firstContentType = Object.keys(response.content)[0] || "application/json";
|
|
42
|
-
schemas[name] = response.content?.[contentType || firstContentType]?.schema;
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
if (includes.includes("requestBodies")) Object.entries(requestBodies).forEach(([name, request]) => {
|
|
47
|
-
if (request.content && !schemas[name]) {
|
|
48
|
-
const firstContentType = Object.keys(request.content)[0] || "application/json";
|
|
49
|
-
schemas[name] = request.content?.[contentType || firstContentType]?.schema;
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
return schemas;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
//#endregion
|
|
56
|
-
Object.defineProperty(exports, 'getSchemaFactory', {
|
|
57
|
-
enumerable: true,
|
|
58
|
-
get: function () {
|
|
59
|
-
return getSchemaFactory;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
Object.defineProperty(exports, 'getSchemas', {
|
|
63
|
-
enumerable: true,
|
|
64
|
-
get: function () {
|
|
65
|
-
return getSchemas;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
//# sourceMappingURL=getSchemas-CP_YS4_2.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getSchemas-CP_YS4_2.cjs","names":["schemas: Record<string, OasTypes.SchemaObject>"],"sources":["../src/utils/getSchemaFactory.ts","../src/utils/getSchemas.ts"],"sourcesContent":["import type { Oas, OpenAPIV3, OpenAPIV3_1, SchemaObject } from '@kubb/oas'\nimport { isOpenApiV3_1Document } from '@kubb/oas'\n\n/**\n * Make it possible to narrow down the schema based on a specific version(3 or 3.1)\n */\ntype SchemaResult<TWithRef extends boolean = false> =\n | {\n schemaObject?: (TWithRef extends true ? OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject : OpenAPIV3.SchemaObject) & {\n nullable?: boolean\n 'x-nullable'?: boolean\n }\n version: '3.0'\n }\n | {\n schemaObject?: (TWithRef extends true ? OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject : OpenAPIV3_1.SchemaObject) & {\n nullable?: boolean\n 'x-nullable'?: boolean\n }\n version: '3.1'\n }\n\n/**\n * Creates a factory function that generates a versioned OpenAPI schema result.\n *\n * The returned function accepts an optional schema object and produces a {@link SchemaResult} containing the dereferenced schema and the OpenAPI version ('3.0' or '3.1').\n *\n * @returns A function that takes an optional schema and returns a versioned schema result.\n */\nexport function getSchemaFactory<TWithRef extends boolean = false>(oas: Oas): (schema?: SchemaObject) => SchemaResult<TWithRef> {\n return (schema?: SchemaObject) => {\n const version = isOpenApiV3_1Document(oas.api) ? '3.1' : '3.0'\n\n return {\n schemaObject: oas.dereferenceWithRef(schema),\n version,\n } as SchemaResult<TWithRef>\n }\n}\n","import type { contentType, Oas, OasTypes } from '@kubb/oas'\n\ntype Mode = 'schemas' | 'responses' | 'requestBodies'\n\ntype GetSchemasProps = {\n oas: Oas\n contentType?: contentType\n includes?: Mode[]\n}\n\nexport function getSchemas({ oas, contentType, includes = ['schemas', 'requestBodies', 'responses'] }: GetSchemasProps): Record<string, OasTypes.SchemaObject> {\n const components = oas.getDefinition().components\n\n let schemas: Record<string, OasTypes.SchemaObject> = {}\n\n if (includes.includes('schemas')) {\n schemas = {\n ...schemas,\n ...((components?.schemas as Record<string, OasTypes.SchemaObject>) || {}),\n }\n }\n\n const requestBodies = components?.requestBodies || {}\n if (includes.includes('responses')) {\n const responses = components?.responses || {}\n\n Object.entries(responses).forEach(([name, response]: [string, OasTypes.ResponseObject]) => {\n if (response.content && !schemas[name]) {\n const firstContentType = Object.keys(response.content)[0] || 'application/json'\n schemas[name] = response.content?.[contentType || firstContentType]?.schema as OasTypes.SchemaObject\n }\n })\n }\n\n if (includes.includes('requestBodies')) {\n Object.entries(requestBodies).forEach(([name, request]: [string, OasTypes.RequestBodyObject]) => {\n if (request.content && !schemas[name]) {\n const firstContentType = Object.keys(request.content)[0] || 'application/json'\n schemas[name] = request.content?.[contentType || firstContentType]?.schema as OasTypes.SchemaObject\n }\n })\n }\n\n return schemas\n}\n"],"mappings":";;;;;;;;;;;;AA6BA,SAAgB,iBAAmD,KAA6D;AAC9H,SAAQ,WAA0B;EAChC,MAAM,gDAAgC,IAAI,IAAI,GAAG,QAAQ;AAEzD,SAAO;GACL,cAAc,IAAI,mBAAmB,OAAO;GAC5C;GACD;;;;;;AC1BL,SAAgB,WAAW,EAAE,KAAK,aAAa,WAAW;CAAC;CAAW;CAAiB;CAAY,IAA4D;CAC7J,MAAM,aAAa,IAAI,eAAe,CAAC;CAEvC,IAAIA,UAAiD,EAAE;AAEvD,KAAI,SAAS,SAAS,UAAU,CAC9B,WAAU;EACR,GAAG;EACH,GAAK,YAAY,WAAqD,EAAE;EACzE;CAGH,MAAM,gBAAgB,YAAY,iBAAiB,EAAE;AACrD,KAAI,SAAS,SAAS,YAAY,EAAE;EAClC,MAAM,YAAY,YAAY,aAAa,EAAE;AAE7C,SAAO,QAAQ,UAAU,CAAC,SAAS,CAAC,MAAM,cAAiD;AACzF,OAAI,SAAS,WAAW,CAAC,QAAQ,OAAO;IACtC,MAAM,mBAAmB,OAAO,KAAK,SAAS,QAAQ,CAAC,MAAM;AAC7D,YAAQ,QAAQ,SAAS,UAAU,eAAe,mBAAmB;;IAEvE;;AAGJ,KAAI,SAAS,SAAS,gBAAgB,CACpC,QAAO,QAAQ,cAAc,CAAC,SAAS,CAAC,MAAM,aAAmD;AAC/F,MAAI,QAAQ,WAAW,CAAC,QAAQ,OAAO;GACrC,MAAM,mBAAmB,OAAO,KAAK,QAAQ,QAAQ,CAAC,MAAM;AAC5D,WAAQ,QAAQ,QAAQ,UAAU,eAAe,mBAAmB;;GAEtE;AAGJ,QAAO"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { isOpenApiV3_1Document } from "@kubb/oas";
|
|
2
|
-
|
|
3
|
-
//#region src/utils/getSchemaFactory.ts
|
|
4
|
-
/**
|
|
5
|
-
* Creates a factory function that generates a versioned OpenAPI schema result.
|
|
6
|
-
*
|
|
7
|
-
* The returned function accepts an optional schema object and produces a {@link SchemaResult} containing the dereferenced schema and the OpenAPI version ('3.0' or '3.1').
|
|
8
|
-
*
|
|
9
|
-
* @returns A function that takes an optional schema and returns a versioned schema result.
|
|
10
|
-
*/
|
|
11
|
-
function getSchemaFactory(oas) {
|
|
12
|
-
return (schema) => {
|
|
13
|
-
const version = isOpenApiV3_1Document(oas.api) ? "3.1" : "3.0";
|
|
14
|
-
return {
|
|
15
|
-
schemaObject: oas.dereferenceWithRef(schema),
|
|
16
|
-
version
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/utils/getSchemas.ts
|
|
23
|
-
function getSchemas({ oas, contentType, includes = [
|
|
24
|
-
"schemas",
|
|
25
|
-
"requestBodies",
|
|
26
|
-
"responses"
|
|
27
|
-
] }) {
|
|
28
|
-
const components = oas.getDefinition().components;
|
|
29
|
-
let schemas = {};
|
|
30
|
-
if (includes.includes("schemas")) schemas = {
|
|
31
|
-
...schemas,
|
|
32
|
-
...components?.schemas || {}
|
|
33
|
-
};
|
|
34
|
-
const requestBodies = components?.requestBodies || {};
|
|
35
|
-
if (includes.includes("responses")) {
|
|
36
|
-
const responses = components?.responses || {};
|
|
37
|
-
Object.entries(responses).forEach(([name, response]) => {
|
|
38
|
-
if (response.content && !schemas[name]) {
|
|
39
|
-
const firstContentType = Object.keys(response.content)[0] || "application/json";
|
|
40
|
-
schemas[name] = response.content?.[contentType || firstContentType]?.schema;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
if (includes.includes("requestBodies")) Object.entries(requestBodies).forEach(([name, request]) => {
|
|
45
|
-
if (request.content && !schemas[name]) {
|
|
46
|
-
const firstContentType = Object.keys(request.content)[0] || "application/json";
|
|
47
|
-
schemas[name] = request.content?.[contentType || firstContentType]?.schema;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
return schemas;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
//#endregion
|
|
54
|
-
export { getSchemaFactory as n, getSchemas as t };
|
|
55
|
-
//# sourceMappingURL=getSchemas-CTi8zYew.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getSchemas-CTi8zYew.js","names":["schemas: Record<string, OasTypes.SchemaObject>"],"sources":["../src/utils/getSchemaFactory.ts","../src/utils/getSchemas.ts"],"sourcesContent":["import type { Oas, OpenAPIV3, OpenAPIV3_1, SchemaObject } from '@kubb/oas'\nimport { isOpenApiV3_1Document } from '@kubb/oas'\n\n/**\n * Make it possible to narrow down the schema based on a specific version(3 or 3.1)\n */\ntype SchemaResult<TWithRef extends boolean = false> =\n | {\n schemaObject?: (TWithRef extends true ? OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject : OpenAPIV3.SchemaObject) & {\n nullable?: boolean\n 'x-nullable'?: boolean\n }\n version: '3.0'\n }\n | {\n schemaObject?: (TWithRef extends true ? OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject : OpenAPIV3_1.SchemaObject) & {\n nullable?: boolean\n 'x-nullable'?: boolean\n }\n version: '3.1'\n }\n\n/**\n * Creates a factory function that generates a versioned OpenAPI schema result.\n *\n * The returned function accepts an optional schema object and produces a {@link SchemaResult} containing the dereferenced schema and the OpenAPI version ('3.0' or '3.1').\n *\n * @returns A function that takes an optional schema and returns a versioned schema result.\n */\nexport function getSchemaFactory<TWithRef extends boolean = false>(oas: Oas): (schema?: SchemaObject) => SchemaResult<TWithRef> {\n return (schema?: SchemaObject) => {\n const version = isOpenApiV3_1Document(oas.api) ? '3.1' : '3.0'\n\n return {\n schemaObject: oas.dereferenceWithRef(schema),\n version,\n } as SchemaResult<TWithRef>\n }\n}\n","import type { contentType, Oas, OasTypes } from '@kubb/oas'\n\ntype Mode = 'schemas' | 'responses' | 'requestBodies'\n\ntype GetSchemasProps = {\n oas: Oas\n contentType?: contentType\n includes?: Mode[]\n}\n\nexport function getSchemas({ oas, contentType, includes = ['schemas', 'requestBodies', 'responses'] }: GetSchemasProps): Record<string, OasTypes.SchemaObject> {\n const components = oas.getDefinition().components\n\n let schemas: Record<string, OasTypes.SchemaObject> = {}\n\n if (includes.includes('schemas')) {\n schemas = {\n ...schemas,\n ...((components?.schemas as Record<string, OasTypes.SchemaObject>) || {}),\n }\n }\n\n const requestBodies = components?.requestBodies || {}\n if (includes.includes('responses')) {\n const responses = components?.responses || {}\n\n Object.entries(responses).forEach(([name, response]: [string, OasTypes.ResponseObject]) => {\n if (response.content && !schemas[name]) {\n const firstContentType = Object.keys(response.content)[0] || 'application/json'\n schemas[name] = response.content?.[contentType || firstContentType]?.schema as OasTypes.SchemaObject\n }\n })\n }\n\n if (includes.includes('requestBodies')) {\n Object.entries(requestBodies).forEach(([name, request]: [string, OasTypes.RequestBodyObject]) => {\n if (request.content && !schemas[name]) {\n const firstContentType = Object.keys(request.content)[0] || 'application/json'\n schemas[name] = request.content?.[contentType || firstContentType]?.schema as OasTypes.SchemaObject\n }\n })\n }\n\n return schemas\n}\n"],"mappings":";;;;;;;;;;AA6BA,SAAgB,iBAAmD,KAA6D;AAC9H,SAAQ,WAA0B;EAChC,MAAM,UAAU,sBAAsB,IAAI,IAAI,GAAG,QAAQ;AAEzD,SAAO;GACL,cAAc,IAAI,mBAAmB,OAAO;GAC5C;GACD;;;;;;AC1BL,SAAgB,WAAW,EAAE,KAAK,aAAa,WAAW;CAAC;CAAW;CAAiB;CAAY,IAA4D;CAC7J,MAAM,aAAa,IAAI,eAAe,CAAC;CAEvC,IAAIA,UAAiD,EAAE;AAEvD,KAAI,SAAS,SAAS,UAAU,CAC9B,WAAU;EACR,GAAG;EACH,GAAK,YAAY,WAAqD,EAAE;EACzE;CAGH,MAAM,gBAAgB,YAAY,iBAAiB,EAAE;AACrD,KAAI,SAAS,SAAS,YAAY,EAAE;EAClC,MAAM,YAAY,YAAY,aAAa,EAAE;AAE7C,SAAO,QAAQ,UAAU,CAAC,SAAS,CAAC,MAAM,cAAiD;AACzF,OAAI,SAAS,WAAW,CAAC,QAAQ,OAAO;IACtC,MAAM,mBAAmB,OAAO,KAAK,SAAS,QAAQ,CAAC,MAAM;AAC7D,YAAQ,QAAQ,SAAS,UAAU,eAAe,mBAAmB;;IAEvE;;AAGJ,KAAI,SAAS,SAAS,gBAAgB,CACpC,QAAO,QAAQ,cAAc,CAAC,SAAS,CAAC,MAAM,aAAmD;AAC/F,MAAI,QAAQ,WAAW,CAAC,QAAQ,OAAO;GACrC,MAAM,mBAAmB,OAAO,KAAK,QAAQ,QAAQ,CAAC,MAAM;AAC5D,WAAQ,QAAQ,QAAQ,UAAU,eAAe,mBAAmB;;GAEtE;AAGJ,QAAO"}
|