zudoku 0.41.1 → 0.41.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.
Files changed (30) hide show
  1. package/dist/lib/oas/parser/index.d.ts +1 -1
  2. package/dist/lib/oas/parser/index.js +3 -3
  3. package/dist/lib/oas/parser/index.js.map +1 -1
  4. package/dist/lib/oas/parser/upgrade/index.d.ts +9 -0
  5. package/dist/lib/oas/parser/upgrade/index.js +90 -0
  6. package/dist/lib/oas/parser/upgrade/index.js.map +1 -0
  7. package/dist/vite/plugin-api.js +1 -1
  8. package/dist/vite/plugin-api.js.map +1 -1
  9. package/lib/{OasProvider-DY8kA-9x.js → OasProvider-C15HpDwF.js} +2 -2
  10. package/lib/{OasProvider-DY8kA-9x.js.map → OasProvider-C15HpDwF.js.map} +1 -1
  11. package/lib/{OperationList-BNneqYos.js → OperationList-j4pFeiTb.js} +2 -2
  12. package/lib/{OperationList-BNneqYos.js.map → OperationList-j4pFeiTb.js.map} +1 -1
  13. package/lib/{SchemaList-CbFxph_p.js → SchemaList-DRck1myS.js} +2 -2
  14. package/lib/{SchemaList-CbFxph_p.js.map → SchemaList-DRck1myS.js.map} +1 -1
  15. package/lib/{createServer-D_5UkLtY.js → createServer-IW7v5hWm.js} +1485 -1459
  16. package/lib/createServer-IW7v5hWm.js.map +1 -0
  17. package/lib/{public-api-CrAQFYc4.js → index-DcHeSvkE.js} +684 -651
  18. package/lib/index-DcHeSvkE.js.map +1 -0
  19. package/lib/{index-pAogBEk7.js → index-Dk7l9To6.js} +5 -5
  20. package/lib/{index-pAogBEk7.js.map → index-Dk7l9To6.js.map} +1 -1
  21. package/lib/zudoku.plugin-openapi.js +1 -1
  22. package/package.json +1 -1
  23. package/src/lib/oas/parser/index.ts +3 -4
  24. package/src/lib/oas/parser/upgrade/index.ts +103 -0
  25. package/lib/createServer-D_5UkLtY.js.map +0 -1
  26. package/lib/index-BpThvE5R.js +0 -66
  27. package/lib/index-BpThvE5R.js.map +0 -1
  28. package/lib/index-ueM1dihS.js +0 -247
  29. package/lib/index-ueM1dihS.js.map +0 -1
  30. package/lib/public-api-CrAQFYc4.js.map +0 -1
@@ -1,66 +0,0 @@
1
- import { A as s, c as a, C as e, D as r, L as i, a as o, P as t, b as n, S as l, d as c, Y as p, e as A, f as m, g as u, h as S, i as L, j as M, k as Y, l as f, m as C, n as P, o as d, p as g, q as D, r as b, s as v, t as y, v as _, u as j } from "./public-api-CrAQFYc4.js";
2
- const T = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3
- __proto__: null,
4
- Alias: s,
5
- CST: a,
6
- Composer: e,
7
- Document: r,
8
- Lexer: i,
9
- LineCounter: o,
10
- Pair: t,
11
- Parser: n,
12
- Scalar: l,
13
- Schema: c,
14
- YAMLError: p,
15
- YAMLMap: A,
16
- YAMLParseError: m,
17
- YAMLSeq: u,
18
- YAMLWarning: S,
19
- isAlias: L,
20
- isCollection: M,
21
- isDocument: Y,
22
- isMap: f,
23
- isNode: C,
24
- isPair: P,
25
- isScalar: d,
26
- isSeq: g,
27
- parse: D,
28
- parseAllDocuments: b,
29
- parseDocument: v,
30
- stringify: y,
31
- visit: _,
32
- visitAsync: j
33
- }, Symbol.toStringTag, { value: "Module" }));
34
- export {
35
- s as Alias,
36
- a as CST,
37
- e as Composer,
38
- r as Document,
39
- i as Lexer,
40
- o as LineCounter,
41
- t as Pair,
42
- n as Parser,
43
- l as Scalar,
44
- c as Schema,
45
- p as YAMLError,
46
- A as YAMLMap,
47
- m as YAMLParseError,
48
- u as YAMLSeq,
49
- S as YAMLWarning,
50
- T as default,
51
- L as isAlias,
52
- M as isCollection,
53
- Y as isDocument,
54
- f as isMap,
55
- C as isNode,
56
- P as isPair,
57
- d as isScalar,
58
- g as isSeq,
59
- D as parse,
60
- b as parseAllDocuments,
61
- v as parseDocument,
62
- y as stringify,
63
- _ as visit,
64
- j as visitAsync
65
- };
66
- //# sourceMappingURL=index-BpThvE5R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BpThvE5R.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,247 +0,0 @@
1
- import { q as h } from "./public-api-CrAQFYc4.js";
2
- function j(n) {
3
- return n == null ? void 0 : n.find((e) => e.isEntrypoint);
4
- }
5
- function p(n, e, t = []) {
6
- const i = {};
7
- for (const [f, s] of Object.entries(n)) {
8
- const o = [...t, f];
9
- Array.isArray(s) ? i[f] = s.map((c, r) => typeof c == "object" && !Array.isArray(c) && c !== null ? p(c, e, [...o, r.toString()]) : c) : typeof s == "object" && !Array.isArray(s) && s !== null ? i[f] = p(s, e, o) : i[f] = s;
10
- }
11
- return e(i, t);
12
- }
13
- function x(n) {
14
- const e = [];
15
- return !n || typeof n != "object" ? e : (p(n, (t) => (t.$ref && typeof t.$ref == "string" && !t.$ref.startsWith("#") && e.push(t.$ref.split("#")[0]), t)), [...new Set(e)]);
16
- }
17
- function b(n) {
18
- return typeof n < "u" && Array.isArray(n) && n.length > 0 && n.some((e) => e.isEntrypoint === !0);
19
- }
20
- function O(n) {
21
- if (n === null)
22
- return {};
23
- if (typeof n == "string") {
24
- if (n.trim() === "")
25
- return {};
26
- try {
27
- return JSON.parse(n);
28
- } catch {
29
- return h(n, {
30
- maxAliasCount: 1e4
31
- });
32
- }
33
- }
34
- return b(n), n;
35
- }
36
- function q(n, e = {}) {
37
- if (b(n))
38
- return n;
39
- const t = O(n);
40
- return [
41
- {
42
- isEntrypoint: !0,
43
- specification: t,
44
- filename: null,
45
- dir: "./",
46
- references: x(t),
47
- ...e
48
- }
49
- ];
50
- }
51
- function w(n) {
52
- let e = n;
53
- if (e !== null && typeof e.openapi == "string" && e.openapi.startsWith("3.0"))
54
- e.openapi = "3.1.1";
55
- else
56
- return e;
57
- return e = p(e, (t) => (t.type !== "undefined" && t.nullable === !0 && (t.type = [t.type, "null"], delete t.nullable), t)), e = p(e, (t) => (t.exclusiveMinimum === !0 ? (t.exclusiveMinimum = t.minimum, delete t.minimum) : t.exclusiveMinimum === !1 && delete t.exclusiveMinimum, t.exclusiveMaximum === !0 ? (t.exclusiveMaximum = t.maximum, delete t.maximum) : t.exclusiveMaximum === !1 && delete t.exclusiveMaximum, t)), e = p(e, (t, i) => (t.example !== void 0 && (P(i) ? t.examples = [t.example] : t.examples = {
58
- default: {
59
- value: t.example
60
- }
61
- }, delete t.example), t)), e = p(e, (t, i) => {
62
- if (t.type === "object" && t.properties !== void 0 && i.slice(0, -1).some((o, c) => o === "content" && i[c + 1] === "multipart/form-data")) {
63
- const o = Object.entries(t.properties);
64
- for (const [c, r] of o)
65
- typeof r == "object" && r.type === "string" && r.format === "binary" && (r.contentMediaType = "application/octet-stream", delete r.format);
66
- }
67
- return t;
68
- }), e = p(e, (t, i) => i.includes("content") && i.includes("application/octet-stream") ? {} : t.type === "string" && t.format === "binary" ? {
69
- type: "string",
70
- contentMediaType: "application/octet-stream"
71
- } : t), e = p(e, (t) => t.type === "string" && t.format === "base64" ? {
72
- type: "string",
73
- contentEncoding: "base64"
74
- } : t), e = p(e, (t, i) => t.type === "string" && t.format === "byte" ? {
75
- type: "string",
76
- contentEncoding: "base64",
77
- contentMediaType: i.slice(0, -1).find((o, c) => i[c - 1] === "content")
78
- } : t), e;
79
- }
80
- function P(n) {
81
- return [
82
- ["components", "schemas"],
83
- "properties",
84
- "items",
85
- "allOf",
86
- "anyOf",
87
- "oneOf",
88
- "not",
89
- "additionalProperties"
90
- ].some((t) => Array.isArray(t) ? t.every((i, f) => n[f] === i) : n.includes(t)) || n.includes("schema") || n.some((t) => t.endsWith("Schema"));
91
- }
92
- function M(n) {
93
- var t, i, f;
94
- let e = n;
95
- if (e !== null && typeof e.swagger == "string" && ((t = e.swagger) != null && t.startsWith("2.0")))
96
- e.openapi = "3.0.4", delete e.swagger;
97
- else
98
- return e;
99
- if (e.host) {
100
- const s = Array.isArray(e.schemes) && ((i = e.schemes) != null && i.length) ? e.schemes : ["http"];
101
- e.servers = s.map((o) => ({
102
- url: `${o}://${e.host}${e.basePath ?? ""}`
103
- })), delete e.basePath, delete e.schemes, delete e.host;
104
- } else e.basePath && (e.servers = [{ url: e.basePath }], delete e.basePath);
105
- if (e.definitions && (e.components = Object.assign({}, e.components, {
106
- schemas: e.definitions
107
- }), delete e.definitions, e = p(e, (s) => {
108
- var o;
109
- return (o = s.$ref) != null && o.startsWith("#/definitions/") && (s.$ref = s.$ref.replace(/^#\/definitions\//, "#/components/schemas/")), s;
110
- })), e = p(e, (s) => (s.type === "file" && (s.type = "string", s.format = "binary"), s)), typeof e.paths == "object") {
111
- for (const s in e.paths)
112
- if (Object.hasOwn(e.paths, s)) {
113
- const o = e.paths[s];
114
- for (const c in o)
115
- if (Object.hasOwn(o, c)) {
116
- const r = o[c];
117
- if (r.parameters) {
118
- const l = structuredClone(r.parameters.find((u) => u.in === "body") ?? {});
119
- if (l && Object.keys(l).length) {
120
- delete l.name, delete l.in;
121
- const u = e.consumes ?? r.consumes ?? ["application/json"];
122
- typeof r.requestBody != "object" && (r.requestBody = {}), typeof r.requestBody.content != "object" && (r.requestBody.content = {});
123
- const { schema: m, ...d } = l;
124
- r.requestBody = {
125
- ...r.requestBody,
126
- ...d
127
- };
128
- for (const g of u)
129
- r.requestBody.content[g] = {
130
- schema: m
131
- };
132
- }
133
- r.parameters = r.parameters.filter((u) => u.in !== "body"), delete r.consumes;
134
- const a = r.parameters.filter((u) => u.in === "formData");
135
- if (a.length > 0) {
136
- typeof r.requestBody != "object" && (r.requestBody = {}), typeof r.requestBody.content != "object" && (r.requestBody.content = {}), r.requestBody.content["application/x-www-form-urlencoded"] = {
137
- schema: {
138
- type: "object",
139
- properties: {},
140
- required: []
141
- // Initialize required array
142
- }
143
- };
144
- for (const u of a)
145
- r.requestBody.content["application/x-www-form-urlencoded"].schema.properties[u.name] = {
146
- type: u.type,
147
- description: u.description
148
- }, u.required && r.requestBody.content["application/x-www-form-urlencoded"].schema.required.push(u.name);
149
- r.parameters = r.parameters.filter((u) => u.in !== "formData");
150
- }
151
- r.parameters = r.parameters.map((u) => y(u));
152
- }
153
- if (r.responses) {
154
- for (const l in r.responses)
155
- if (Object.hasOwn(r.responses, l)) {
156
- const a = r.responses[l];
157
- if (a.headers && (a.headers = Object.entries(a.headers).reduce((u, [m, d]) => ({
158
- [m]: y(d),
159
- ...u
160
- }), {})), a.schema) {
161
- const u = e.produces ?? r.produces ?? ["application/json"];
162
- typeof a.content != "object" && (a.content = {});
163
- for (const m of u)
164
- a.content[m] = {
165
- schema: a.schema
166
- };
167
- delete a.schema;
168
- }
169
- }
170
- }
171
- delete r.produces, ((f = r.parameters) == null ? void 0 : f.length) === 0 && delete r.parameters;
172
- }
173
- }
174
- }
175
- if (e.securityDefinitions) {
176
- typeof e.components != "object" && (e.components = {}), e.components = e.components, Object.assign(e.components, { securitySchemes: {} });
177
- for (const [s, o] of Object.entries(e.securityDefinitions))
178
- if (typeof o == "object")
179
- if ("type" in o && o.type === "oauth2") {
180
- const { flow: c, authorizationUrl: r, tokenUrl: l, scopes: a } = o;
181
- Object.assign(e.components.securitySchemes, {
182
- [s]: {
183
- type: "oauth2",
184
- flows: {
185
- [c]: Object.assign({}, r && { authorizationUrl: r }, l && { tokenUrl: l }, a && { scopes: a })
186
- }
187
- }
188
- });
189
- } else "type" in o && o.type === "basic" ? Object.assign(e.components.securitySchemes, {
190
- [s]: {
191
- type: "http",
192
- scheme: "basic"
193
- }
194
- }) : Object.assign(e.components.securitySchemes, {
195
- [s]: o
196
- });
197
- delete e.securityDefinitions;
198
- }
199
- return e;
200
- }
201
- function B(n) {
202
- return [
203
- "type",
204
- "format",
205
- "items",
206
- "maximum",
207
- "exclusiveMaximum",
208
- "minimum",
209
- "exclusiveMinimum",
210
- "maxLength",
211
- "minLength",
212
- "pattern",
213
- "maxItems",
214
- "minItems",
215
- "uniqueItems",
216
- "enum",
217
- "multipleOf"
218
- ].reduce((t, i) => (Object.hasOwn(n, i) && (t[i] = n[i], delete n[i]), t), {});
219
- }
220
- function y(n) {
221
- return delete n.collectionFormat, delete n.default, {
222
- schema: B(n),
223
- ...n
224
- };
225
- }
226
- function S(n) {
227
- return n ? {
228
- specification: [M, w].reduce((i, f) => f(i), j(q(n)).specification),
229
- // TODO: Make dynamic
230
- version: "3.1"
231
- } : {
232
- specification: null,
233
- version: "3.1"
234
- };
235
- }
236
- export {
237
- j as getEntrypoint,
238
- x as getListOfReferences,
239
- b as isFilesystem,
240
- P as isSchemaPath,
241
- O as normalize,
242
- p as traverse,
243
- S as upgrade,
244
- w as upgradeFromThreeToThreeOne,
245
- M as upgradeFromTwoToThree
246
- };
247
- //# sourceMappingURL=index-ueM1dihS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-ueM1dihS.js","sources":["../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/getEntrypoint.js","../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/traverse.js","../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/getListOfReferences.js","../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/isFilesystem.js","../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/normalize.js","../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/makeFilesystem.js","../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/upgradeFromThreeToThreeOne.js","../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/upgradeFromTwoToThree.js","../../../node_modules/.pnpm/@scalar+openapi-parser@0.10.14/node_modules/@scalar/openapi-parser/dist/utils/upgrade.js"],"sourcesContent":["/**\n * Return just the entrypoint of the filesystem.\n */\nfunction getEntrypoint(filesystem) {\n return filesystem?.find((file) => file.isEntrypoint);\n}\n\nexport { getEntrypoint };\n","/**\n * Recursively traverses the specification and applies the transform function to each node.\n */\nfunction traverse(specification, transform, path = []) {\n const result = {};\n for (const [key, value] of Object.entries(specification)) {\n const currentPath = [...path, key];\n if (Array.isArray(value)) {\n result[key] = value.map((item, index) => {\n if (typeof item === 'object' && !Array.isArray(item) && item !== null) {\n return traverse(item, transform, [...currentPath, index.toString()]);\n }\n return item;\n });\n }\n else if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\n result[key] = traverse(value, transform, currentPath);\n }\n else {\n result[key] = value;\n }\n }\n return transform(result, path);\n}\n\nexport { traverse };\n","import { traverse } from './traverse.js';\n\n/**\n * Walks through the specification and returns all references as an array.\n *\n * Warning: Doesn’t return internal references.\n */\nfunction getListOfReferences(specification) {\n const references = [];\n // Make sure we’re dealing with an object\n if (!specification || typeof specification !== 'object') {\n return references;\n }\n // Traverse the specification and collect all references\n traverse(specification, (value) => {\n if (value.$ref && typeof value.$ref === 'string' && !value.$ref.startsWith('#')) {\n references.push(value.$ref.split('#')[0]);\n }\n return value;\n });\n // Remove duplicates\n return [...new Set(references)];\n}\n\nexport { getListOfReferences };\n","/**\n * Check if the value is a filesystem\n */\nfunction isFilesystem(value) {\n return (typeof value !== 'undefined' &&\n Array.isArray(value) &&\n value.length > 0 &&\n value.some((file) => file.isEntrypoint === true));\n}\n\nexport { isFilesystem };\n","import { parse } from 'yaml';\nimport { isFilesystem } from './isFilesystem.js';\n\n/**\n * Normalize the OpenAPI document (YAML, JSON, object) to a JavaScript object.\n *\n * Doesn’t modify the object if it’s a `Filesystem` (multiple files) already.\n */\nfunction normalize(specification) {\n if (specification === null) {\n return {};\n }\n if (typeof specification === 'string') {\n if (specification.trim() === '') {\n return {};\n }\n try {\n return JSON.parse(specification);\n }\n catch (_error) {\n return parse(specification, {\n maxAliasCount: 10000,\n });\n }\n }\n if (isFilesystem(specification)) {\n return specification;\n }\n return specification;\n}\n\nexport { normalize };\n","import { getListOfReferences } from './getListOfReferences.js';\nimport { isFilesystem } from './isFilesystem.js';\nimport { normalize } from './normalize.js';\n\nfunction makeFilesystem(value, overwrites = {}) {\n // Keep as is\n if (isFilesystem(value)) {\n return value;\n }\n // Make an object\n const specification = normalize(value);\n // Create fake filesystem\n return [\n {\n isEntrypoint: true,\n specification,\n filename: null,\n dir: './',\n references: getListOfReferences(specification),\n ...overwrites,\n },\n ];\n}\n\nexport { makeFilesystem };\n","import { traverse } from './traverse.js';\n\n/**\n * Upgrade from OpenAPI 3.0.x to 3.1.1\n *\n * https://www.openapis.org/blog/2021/02/16/migrating-from-openapi-3-0-to-3-1-0\n */\nfunction upgradeFromThreeToThreeOne(originalSpecification) {\n let specification = originalSpecification;\n // Version\n if (specification !== null && typeof specification.openapi === 'string' && specification.openapi.startsWith('3.0')) {\n specification.openapi = '3.1.1';\n }\n else {\n // Skip if it’s something else than 3.0.x\n return specification;\n }\n // Nullable types\n specification = traverse(specification, (schema) => {\n if (schema.type !== 'undefined' && schema.nullable === true) {\n schema.type = [schema.type, 'null'];\n delete schema.nullable;\n }\n return schema;\n });\n // exclusiveMinimum and exclusiveMaximum\n specification = traverse(specification, (schema) => {\n if (schema.exclusiveMinimum === true) {\n schema.exclusiveMinimum = schema.minimum;\n delete schema.minimum;\n }\n else if (schema.exclusiveMinimum === false) {\n delete schema.exclusiveMinimum;\n }\n if (schema.exclusiveMaximum === true) {\n schema.exclusiveMaximum = schema.maximum;\n delete schema.maximum;\n }\n else if (schema.exclusiveMaximum === false) {\n delete schema.exclusiveMaximum;\n }\n return schema;\n });\n // Use examples not example\n specification = traverse(specification, (schema, path) => {\n if (schema.example !== undefined) {\n // Arrays in schemas\n if (isSchemaPath(path)) {\n schema.examples = [schema.example];\n }\n // Objects everywhere else\n else {\n schema.examples = {\n default: {\n value: schema.example,\n },\n };\n }\n delete schema.example;\n }\n return schema;\n });\n // Multipart file uploads with a binary file\n specification = traverse(specification, (schema, path) => {\n if (schema.type === 'object' && schema.properties !== undefined) {\n // Check if this is a multipart request body schema\n const parentPath = path.slice(0, -1);\n const isMultipart = parentPath.some((segment, index) => {\n return segment === 'content' && path[index + 1] === 'multipart/form-data';\n });\n if (isMultipart) {\n // Types\n const entries = Object.entries(schema.properties);\n for (const [_, value] of entries) {\n if (typeof value === 'object' && value.type === 'string' && value.format === 'binary') {\n value.contentMediaType = 'application/octet-stream';\n delete value.format;\n }\n }\n }\n }\n return schema;\n });\n // Uploading a binary file in a POST request\n specification = traverse(specification, (schema, path) => {\n if (path.includes('content') && path.includes('application/octet-stream')) {\n return {};\n }\n if (schema.type === 'string' && schema.format === 'binary') {\n return {\n type: 'string',\n contentMediaType: 'application/octet-stream',\n };\n }\n return schema;\n });\n // Uploading an image with base64 encoding\n specification = traverse(specification, (schema) => {\n if (schema.type === 'string' && schema.format === 'base64') {\n return {\n type: 'string',\n contentEncoding: 'base64',\n };\n }\n return schema;\n });\n specification = traverse(specification, (schema, path) => {\n if (schema.type === 'string' && schema.format === 'byte') {\n const parentPath = path.slice(0, -1);\n const contentMediaType = parentPath.find((_, index) => path[index - 1] === 'content');\n return {\n type: 'string',\n contentEncoding: 'base64',\n contentMediaType,\n };\n }\n return schema;\n });\n // Declaring $schema Dialects to protect against change\n // if (typeof specification.$schema === 'undefined') {\n // specification.$schema = 'http://json-schema.org/draft-07/schema#'\n // }\n return specification;\n}\n/** Determine if the current path is within a schema */\nfunction isSchemaPath(path) {\n const schemaLocations = [\n ['components', 'schemas'],\n 'properties',\n 'items',\n 'allOf',\n 'anyOf',\n 'oneOf',\n 'not',\n 'additionalProperties',\n ];\n return (schemaLocations.some((location) => {\n if (Array.isArray(location)) {\n return location.every((segment, index) => path[index] === segment);\n }\n return path.includes(location);\n }) ||\n path.includes('schema') ||\n path.some((segment) => segment.endsWith('Schema')));\n}\n\nexport { isSchemaPath, upgradeFromThreeToThreeOne };\n","import { traverse } from './traverse.js';\n\n/**\n * Upgrade Swagger 2.0 to OpenAPI 3.0\n *\n * https://swagger.io/blog/news/whats-new-in-openapi-3-0/\n */\nfunction upgradeFromTwoToThree(originalSpecification) {\n let specification = originalSpecification;\n // Version\n if (specification !== null && typeof specification.swagger === 'string' && specification.swagger?.startsWith('2.0')) {\n specification.openapi = '3.0.4';\n delete specification.swagger;\n }\n else {\n // Skip if it’s something else than 3.0.x\n return specification;\n }\n // Servers\n if (specification.host) {\n const schemes = Array.isArray(specification.schemes) && specification.schemes?.length ? specification.schemes : ['http'];\n specification.servers = schemes.map((scheme) => ({\n url: `${scheme}://${specification.host}${specification.basePath ?? ''}`,\n }));\n delete specification.basePath;\n delete specification.schemes;\n delete specification.host;\n }\n else if (specification.basePath) {\n specification.servers = [{ url: specification.basePath }];\n delete specification.basePath;\n }\n // Schemas\n if (specification.definitions) {\n specification.components = Object.assign({}, specification.components, {\n schemas: specification.definitions,\n });\n delete specification.definitions;\n // Rewrite $refs to definitions\n specification = traverse(specification, (schema) => {\n if (schema.$ref?.startsWith('#/definitions/')) {\n schema.$ref = schema.$ref.replace(/^#\\/definitions\\//, '#/components/schemas/');\n }\n return schema;\n });\n }\n specification = traverse(specification, (schema) => {\n if (schema.type === 'file') {\n schema.type = 'string';\n schema.format = 'binary';\n }\n return schema;\n });\n // Paths\n if (typeof specification.paths === 'object') {\n for (const path in specification.paths) {\n if (Object.hasOwn(specification.paths, path)) {\n const pathItem = specification.paths[path];\n for (const method in pathItem) {\n if (Object.hasOwn(pathItem, method)) {\n const operationItem = pathItem[method];\n // Request bodies\n if (operationItem.parameters) {\n const bodyParameter = structuredClone(operationItem.parameters.find((parameter) => parameter.in === 'body') ?? {});\n if (bodyParameter && Object.keys(bodyParameter).length) {\n delete bodyParameter.name;\n delete bodyParameter.in;\n const consumes = specification.consumes ?? operationItem.consumes ?? ['application/json'];\n if (typeof operationItem.requestBody !== 'object') {\n operationItem.requestBody = {};\n }\n if (typeof operationItem.requestBody.content !== 'object') {\n operationItem.requestBody.content = {};\n }\n const { schema, ...requestBody } = bodyParameter;\n operationItem.requestBody = {\n ...operationItem.requestBody,\n ...requestBody,\n };\n for (const type of consumes) {\n operationItem.requestBody.content[type] = {\n schema: schema,\n };\n }\n }\n // Delete body parameter\n operationItem.parameters = operationItem.parameters.filter((parameter) => parameter.in !== 'body');\n delete operationItem.consumes;\n // formData parameters\n const formDataParameters = operationItem.parameters.filter((parameter) => parameter.in === 'formData');\n if (formDataParameters.length > 0) {\n if (typeof operationItem.requestBody !== 'object') {\n operationItem.requestBody = {};\n }\n if (typeof operationItem.requestBody.content !== 'object') {\n operationItem.requestBody.content = {};\n }\n operationItem.requestBody.content['application/x-www-form-urlencoded'] = {\n schema: {\n type: 'object',\n properties: {},\n required: [], // Initialize required array\n },\n };\n for (const param of formDataParameters) {\n operationItem.requestBody.content['application/x-www-form-urlencoded'].schema.properties[param.name] =\n {\n type: param.type,\n description: param.description,\n };\n // Add to required array if param is required\n if (param.required) {\n operationItem.requestBody.content['application/x-www-form-urlencoded'].schema.required.push(param.name);\n }\n }\n // Remove formData parameters from the parameters array\n operationItem.parameters = operationItem.parameters.filter((parameter) => parameter.in !== 'formData');\n }\n operationItem.parameters = operationItem.parameters.map((parameter) => transformParameterObject(parameter));\n }\n // Responses\n if (operationItem.responses) {\n for (const response in operationItem.responses) {\n if (Object.hasOwn(operationItem.responses, response)) {\n const responseItem = operationItem.responses[response];\n if (responseItem.headers) {\n responseItem.headers = Object.entries(responseItem.headers).reduce((acc, [name, header]) => {\n return {\n [name]: transformParameterObject(header),\n ...acc,\n };\n }, {});\n }\n if (responseItem.schema) {\n const produces = specification.produces ?? operationItem.produces ?? ['application/json'];\n if (typeof responseItem.content !== 'object') {\n responseItem.content = {};\n }\n for (const type of produces) {\n responseItem.content[type] = {\n schema: responseItem.schema,\n };\n }\n delete responseItem.schema;\n }\n }\n }\n }\n delete operationItem.produces;\n // Delete empty parameters\n if (operationItem.parameters?.length === 0) {\n delete operationItem.parameters;\n }\n }\n }\n }\n }\n }\n // Upgrade securityDefinitions\n if (specification.securityDefinitions) {\n if (typeof specification.components !== 'object') {\n specification.components = {};\n }\n // Assert that components is of type OpenAPIV3.ComponentsObject\n specification.components = specification.components;\n Object.assign(specification.components, { securitySchemes: {} });\n for (const [key, securityScheme] of Object.entries(specification.securityDefinitions)) {\n if (typeof securityScheme === 'object') {\n if ('type' in securityScheme && securityScheme.type === 'oauth2') {\n const { flow, authorizationUrl, tokenUrl, scopes } = securityScheme;\n // Assert that securitySchemes is of type OpenAPIV3.SecuritySchemeObject\n Object.assign(specification.components.securitySchemes, {\n [key]: {\n type: 'oauth2',\n flows: {\n [flow]: Object.assign({}, authorizationUrl && { authorizationUrl }, tokenUrl && { tokenUrl }, scopes && { scopes }),\n },\n },\n });\n }\n else if ('type' in securityScheme && securityScheme.type === 'basic') {\n Object.assign(specification.components.securitySchemes, {\n [key]: {\n type: 'http',\n scheme: 'basic',\n },\n });\n }\n else {\n Object.assign(specification.components.securitySchemes, {\n [key]: securityScheme,\n });\n }\n }\n }\n delete specification.securityDefinitions;\n }\n return specification;\n}\nfunction transformItemsObject(obj) {\n const schemaProperties = [\n 'type',\n 'format',\n 'items',\n 'maximum',\n 'exclusiveMaximum',\n 'minimum',\n 'exclusiveMinimum',\n 'maxLength',\n 'minLength',\n 'pattern',\n 'maxItems',\n 'minItems',\n 'uniqueItems',\n 'enum',\n 'multipleOf',\n ];\n return schemaProperties.reduce((acc, property) => {\n if (Object.hasOwn(obj, property)) {\n acc[property] = obj[property];\n delete obj[property];\n }\n return acc;\n }, {});\n}\nfunction transformParameterObject(parameter) {\n delete parameter.collectionFormat;\n delete parameter.default;\n return {\n schema: transformItemsObject(parameter),\n ...parameter,\n };\n}\n\nexport { upgradeFromTwoToThree };\n","import { getEntrypoint } from './getEntrypoint.js';\nimport { makeFilesystem } from './makeFilesystem.js';\nimport { upgradeFromThreeToThreeOne } from './upgradeFromThreeToThreeOne.js';\nimport { upgradeFromTwoToThree } from './upgradeFromTwoToThree.js';\n\n/**\n * Upgrade specification to OpenAPI 3.1.0\n */\nfunction upgrade(value) {\n if (!value) {\n return {\n specification: null,\n version: '3.1',\n };\n }\n const upgraders = [upgradeFromTwoToThree, upgradeFromThreeToThreeOne];\n // TODO: Run upgrade over the whole filesystem\n const result = upgraders.reduce((currentSpecification, upgrader) => upgrader(currentSpecification), getEntrypoint(makeFilesystem(value)).specification);\n return {\n specification: result,\n // TODO: Make dynamic\n version: '3.1',\n };\n}\n\nexport { upgrade };\n"],"names":["getEntrypoint","filesystem","file","traverse","specification","transform","path","result","key","value","currentPath","item","index","getListOfReferences","references","isFilesystem","normalize","parse","makeFilesystem","overwrites","upgradeFromThreeToThreeOne","originalSpecification","schema","isSchemaPath","segment","entries","_","location","upgradeFromTwoToThree","_a","schemes","_b","scheme","pathItem","method","operationItem","bodyParameter","parameter","consumes","requestBody","type","formDataParameters","param","transformParameterObject","response","responseItem","acc","name","header","produces","_c","securityScheme","flow","authorizationUrl","tokenUrl","scopes","transformItemsObject","obj","property","upgrade","currentSpecification","upgrader"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}