docusaurus-plugin-openapi-docs 1.5.1 → 1.6.0
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/lib/index.js +5 -0
- package/lib/markdown/createArrayBracket.d.ts +2 -0
- package/lib/markdown/createArrayBracket.js +37 -0
- package/lib/markdown/createAuthentication.js +45 -13
- package/lib/markdown/createRequestSchema.js +133 -91
- package/lib/markdown/createResponseSchema.js +140 -95
- package/lib/markdown/createStatusCodes.js +7 -7
- package/lib/markdown/index.js +1 -1
- package/lib/openapi/createRequestExample.js +27 -8
- package/lib/openapi/createResponseExample.js +27 -8
- package/lib/openapi/openapi.js +7 -1
- package/lib/openapi/utils/loadAndResolveSpec.js +13 -0
- package/lib/options.js +1 -0
- package/lib/sidebars/index.js +3 -1
- package/lib/types.d.ts +1 -0
- package/package.json +8 -8
- package/src/index.ts +6 -0
- package/src/markdown/createArrayBracket.ts +35 -0
- package/src/markdown/createAuthentication.ts +53 -17
- package/src/markdown/createRequestSchema.ts +208 -107
- package/src/markdown/createResponseSchema.ts +228 -119
- package/src/markdown/createStatusCodes.ts +42 -47
- package/src/markdown/index.ts +1 -1
- package/src/openapi/createRequestExample.ts +36 -13
- package/src/openapi/createResponseExample.ts +36 -13
- package/src/openapi/openapi.ts +7 -1
- package/src/openapi/utils/loadAndResolveSpec.ts +15 -0
- package/src/options.ts +1 -0
- package/src/sidebars/index.ts +6 -1
- package/src/types.ts +1 -0
package/lib/index.js
CHANGED
|
@@ -77,6 +77,8 @@ function pluginOpenAPIDocs(context, options) {
|
|
|
77
77
|
let docPath = docData ? (docData.path ? docData.path : "docs") : undefined;
|
|
78
78
|
async function generateApiDocs(options, pluginId) {
|
|
79
79
|
let { specPath, outputDir, template, downloadUrl, sidebarOptions } = options;
|
|
80
|
+
// Remove trailing slash before proceeding
|
|
81
|
+
outputDir = outputDir.replace(/\/$/, "");
|
|
80
82
|
// Override docPath if pluginId provided
|
|
81
83
|
if (pluginId) {
|
|
82
84
|
docData = getDocsPluginConfig(presetsPlugins, pluginId);
|
|
@@ -147,6 +149,9 @@ custom_edit_url: null
|
|
|
147
149
|
{{#frontMatter.proxy}}
|
|
148
150
|
proxy: {{{frontMatter.proxy}}}
|
|
149
151
|
{{/frontMatter.proxy}}
|
|
152
|
+
{{#frontMatter.hide_send_button}}
|
|
153
|
+
hide_send_button: true
|
|
154
|
+
{{/frontMatter.hide_send_button}}
|
|
150
155
|
---
|
|
151
156
|
|
|
152
157
|
{{{markdown}}}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* ============================================================================
|
|
3
|
+
* Copyright (c) Palo Alto Networks
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
* ========================================================================== */
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createClosingArrayBracket = exports.createOpeningArrayBracket = void 0;
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
function createOpeningArrayBracket() {
|
|
12
|
+
return (0, utils_1.create)("li", {
|
|
13
|
+
children: (0, utils_1.create)("div", {
|
|
14
|
+
style: {
|
|
15
|
+
fontSize: "var(--ifm-code-font-size)",
|
|
16
|
+
opacity: "0.6",
|
|
17
|
+
marginLeft: "-.5rem",
|
|
18
|
+
paddingBottom: ".5rem",
|
|
19
|
+
},
|
|
20
|
+
children: ["Array ["],
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
exports.createOpeningArrayBracket = createOpeningArrayBracket;
|
|
25
|
+
function createClosingArrayBracket() {
|
|
26
|
+
return (0, utils_1.create)("li", {
|
|
27
|
+
children: (0, utils_1.create)("div", {
|
|
28
|
+
style: {
|
|
29
|
+
fontSize: "var(--ifm-code-font-size)",
|
|
30
|
+
opacity: "0.6",
|
|
31
|
+
marginLeft: "-.5rem",
|
|
32
|
+
},
|
|
33
|
+
children: ["]"],
|
|
34
|
+
}),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.createClosingArrayBracket = createClosingArrayBracket;
|
|
@@ -13,7 +13,7 @@ function createAuthentication(securitySchemes) {
|
|
|
13
13
|
if (!securitySchemes || !Object.keys(securitySchemes).length)
|
|
14
14
|
return "";
|
|
15
15
|
const createAuthenticationTable = (securityScheme) => {
|
|
16
|
-
const { bearerFormat, flows, name, scheme, type } = securityScheme;
|
|
16
|
+
const { bearerFormat, flows, name, scheme, type, openIdConnectUrl } = securityScheme;
|
|
17
17
|
const createSecuritySchemeTypeRow = () => (0, utils_1.create)("tr", {
|
|
18
18
|
children: [
|
|
19
19
|
(0, utils_1.create)("th", { children: "Security Scheme Type:" }),
|
|
@@ -25,7 +25,7 @@ function createAuthentication(securitySchemes) {
|
|
|
25
25
|
const { authorizationUrl, tokenUrl, refreshUrl, scopes } = flowObj;
|
|
26
26
|
return (0, utils_1.create)("tr", {
|
|
27
27
|
children: [
|
|
28
|
-
(0, utils_1.create)("th", { children:
|
|
28
|
+
(0, utils_1.create)("th", { children: `OAuth Flow (${flowType}):` }),
|
|
29
29
|
(0, utils_1.create)("td", {
|
|
30
30
|
children: [
|
|
31
31
|
(0, utils_1.guard)(tokenUrl, () => (0, utils_1.create)("p", { children: `Token URL: ${tokenUrl}` })),
|
|
@@ -76,12 +76,12 @@ function createAuthentication(securitySchemes) {
|
|
|
76
76
|
(0, utils_1.create)("td", { children: scheme }),
|
|
77
77
|
],
|
|
78
78
|
}),
|
|
79
|
-
(0, utils_1.create)("tr", {
|
|
79
|
+
(0, utils_1.guard)(bearerFormat, () => (0, utils_1.create)("tr", {
|
|
80
80
|
children: [
|
|
81
81
|
(0, utils_1.create)("th", { children: "Bearer format:" }),
|
|
82
82
|
(0, utils_1.create)("td", { children: bearerFormat }),
|
|
83
83
|
],
|
|
84
|
-
}),
|
|
84
|
+
})),
|
|
85
85
|
],
|
|
86
86
|
}),
|
|
87
87
|
}),
|
|
@@ -100,20 +100,51 @@ function createAuthentication(securitySchemes) {
|
|
|
100
100
|
}),
|
|
101
101
|
],
|
|
102
102
|
});
|
|
103
|
+
case "openIdConnect":
|
|
104
|
+
return (0, utils_1.create)("div", {
|
|
105
|
+
children: [
|
|
106
|
+
(0, utils_1.create)("table", {
|
|
107
|
+
children: (0, utils_1.create)("tbody", {
|
|
108
|
+
children: [
|
|
109
|
+
createSecuritySchemeTypeRow(),
|
|
110
|
+
(0, utils_1.guard)(openIdConnectUrl, () => (0, utils_1.create)("tr", {
|
|
111
|
+
children: [
|
|
112
|
+
(0, utils_1.create)("th", { children: "OpenID Connect URL:" }),
|
|
113
|
+
(0, utils_1.create)("td", { children: openIdConnectUrl }),
|
|
114
|
+
],
|
|
115
|
+
})),
|
|
116
|
+
],
|
|
117
|
+
}),
|
|
118
|
+
}),
|
|
119
|
+
],
|
|
120
|
+
});
|
|
103
121
|
default:
|
|
104
122
|
return "";
|
|
105
123
|
}
|
|
106
124
|
};
|
|
107
|
-
const formatTabLabel = (
|
|
108
|
-
const formattedLabel =
|
|
125
|
+
const formatTabLabel = (key, type, scheme) => {
|
|
126
|
+
const formattedLabel = key
|
|
109
127
|
.replace(/(_|-)/g, " ")
|
|
110
128
|
.trim()
|
|
111
129
|
.replace(/\w\S*/g, (str) => str.charAt(0).toUpperCase() + str.substr(1))
|
|
112
130
|
.replace(/([a-z])([A-Z])/g, "$1 $2")
|
|
113
131
|
.replace(/([A-Z])([A-Z][a-z])/g, "$1 $2");
|
|
114
|
-
const isOAuth =
|
|
115
|
-
const isApiKey =
|
|
116
|
-
|
|
132
|
+
const isOAuth = type === "oauth2";
|
|
133
|
+
const isApiKey = type === "apiKey";
|
|
134
|
+
const isHttpBasic = type === "http" && scheme === "basic";
|
|
135
|
+
const isHttpBearer = type === "http" && scheme === "bearer";
|
|
136
|
+
const isOpenId = type === "openIdConnect";
|
|
137
|
+
if (isOAuth)
|
|
138
|
+
return `OAuth 2.0: ${key}`;
|
|
139
|
+
if (isApiKey)
|
|
140
|
+
return `API Key: ${key}`;
|
|
141
|
+
if (isHttpBasic)
|
|
142
|
+
return "HTTP: Basic Auth";
|
|
143
|
+
if (isHttpBearer)
|
|
144
|
+
return "HTTP: Bearer Auth";
|
|
145
|
+
if (isOpenId)
|
|
146
|
+
return `OpenID Connect: ${key}`;
|
|
147
|
+
return formattedLabel;
|
|
117
148
|
};
|
|
118
149
|
return (0, utils_1.create)("div", {
|
|
119
150
|
children: [
|
|
@@ -122,10 +153,11 @@ function createAuthentication(securitySchemes) {
|
|
|
122
153
|
id: "authentication",
|
|
123
154
|
style: { marginBottom: "1rem" },
|
|
124
155
|
}),
|
|
125
|
-
(0, utils_1.create)("
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
156
|
+
(0, utils_1.create)("SchemaTabs", {
|
|
157
|
+
className: "openapi-tabs__security-schemes",
|
|
158
|
+
children: Object.entries(securitySchemes).map(([schemeKey, schemeObj]) => (0, utils_1.create)("TabItem", {
|
|
159
|
+
label: formatTabLabel(schemeKey, schemeObj.type, schemeObj.scheme),
|
|
160
|
+
value: `${schemeKey}`,
|
|
129
161
|
children: [
|
|
130
162
|
(0, createDescription_1.createDescription)(schemeObj.description),
|
|
131
163
|
createAuthenticationTable(schemeObj),
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* ========================================================================== */
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.createRequestSchema = exports.mergeAllOf = void 0;
|
|
10
|
+
const createArrayBracket_1 = require("./createArrayBracket");
|
|
10
11
|
const createDescription_1 = require("./createDescription");
|
|
11
12
|
const createDetails_1 = require("./createDetails");
|
|
12
13
|
const createDetailsSummary_1 = require("./createDetailsSummary");
|
|
@@ -46,46 +47,55 @@ exports.mergeAllOf = mergeAllOf;
|
|
|
46
47
|
*/
|
|
47
48
|
function createAnyOneOf(schema) {
|
|
48
49
|
const type = schema.oneOf ? "oneOf" : "anyOf";
|
|
49
|
-
return (0, utils_1.create)("
|
|
50
|
+
return (0, utils_1.create)("li", {
|
|
50
51
|
children: [
|
|
51
|
-
(0, utils_1.create)("
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
52
|
+
(0, utils_1.create)("span", {
|
|
53
|
+
className: "badge badge--info",
|
|
54
|
+
children: type,
|
|
55
|
+
}),
|
|
56
|
+
(0, utils_1.create)("SchemaTabs", {
|
|
57
|
+
children: schema[type].map((anyOneSchema, index) => {
|
|
58
|
+
const label = anyOneSchema.title
|
|
59
|
+
? anyOneSchema.title
|
|
60
|
+
: `MOD${index + 1}`;
|
|
61
|
+
const anyOneChildren = [];
|
|
62
|
+
if (anyOneSchema.properties !== undefined) {
|
|
63
|
+
anyOneChildren.push(createProperties(anyOneSchema));
|
|
64
|
+
}
|
|
65
|
+
if (anyOneSchema.allOf !== undefined) {
|
|
66
|
+
anyOneChildren.push(createNodes(anyOneSchema));
|
|
67
|
+
}
|
|
68
|
+
if (anyOneSchema.items !== undefined) {
|
|
69
|
+
anyOneChildren.push(createItems(anyOneSchema));
|
|
70
|
+
}
|
|
71
|
+
if (anyOneSchema.type === "string" ||
|
|
72
|
+
anyOneSchema.type === "number" ||
|
|
73
|
+
anyOneSchema.type === "integer" ||
|
|
74
|
+
anyOneSchema.type === "boolean") {
|
|
75
|
+
anyOneChildren.push(createNodes(anyOneSchema));
|
|
76
|
+
}
|
|
77
|
+
if (anyOneChildren.length) {
|
|
78
|
+
if (schema.type === "array") {
|
|
79
|
+
return (0, utils_1.create)("TabItem", {
|
|
80
|
+
label: label,
|
|
81
|
+
value: `${index}-item-properties`,
|
|
82
|
+
children: [
|
|
83
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
84
|
+
anyOneChildren,
|
|
85
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
86
|
+
]
|
|
87
|
+
.filter(Boolean)
|
|
88
|
+
.flat(),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return (0, utils_1.create)("TabItem", {
|
|
92
|
+
label: label,
|
|
93
|
+
value: `${index}-item-properties`,
|
|
94
|
+
children: anyOneChildren.filter(Boolean).flat(),
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
}),
|
|
89
99
|
}),
|
|
90
100
|
],
|
|
91
101
|
});
|
|
@@ -188,15 +198,27 @@ function createAdditionalProperties(schema) {
|
|
|
188
198
|
}
|
|
189
199
|
// TODO: figure out how to handle array of objects
|
|
190
200
|
function createItems(schema) {
|
|
191
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
201
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
192
202
|
if (((_a = schema.items) === null || _a === void 0 ? void 0 : _a.properties) !== undefined) {
|
|
193
|
-
return
|
|
203
|
+
return [
|
|
204
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
205
|
+
createProperties(schema.items),
|
|
206
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
207
|
+
].flat();
|
|
194
208
|
}
|
|
195
209
|
if (((_b = schema.items) === null || _b === void 0 ? void 0 : _b.additionalProperties) !== undefined) {
|
|
196
|
-
return
|
|
210
|
+
return [
|
|
211
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
212
|
+
createAdditionalProperties(schema.items),
|
|
213
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
214
|
+
].flat();
|
|
197
215
|
}
|
|
198
216
|
if (((_c = schema.items) === null || _c === void 0 ? void 0 : _c.oneOf) !== undefined || ((_d = schema.items) === null || _d === void 0 ? void 0 : _d.anyOf) !== undefined) {
|
|
199
|
-
return
|
|
217
|
+
return [
|
|
218
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
219
|
+
createAnyOneOf(schema.items),
|
|
220
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
221
|
+
].flat();
|
|
200
222
|
}
|
|
201
223
|
if (((_e = schema.items) === null || _e === void 0 ? void 0 : _e.allOf) !== undefined) {
|
|
202
224
|
// TODO: figure out if and how we should pass merged required array
|
|
@@ -205,41 +227,54 @@ function createItems(schema) {
|
|
|
205
227
|
if ((mergedSchemas.oneOf !== undefined ||
|
|
206
228
|
mergedSchemas.anyOf !== undefined) &&
|
|
207
229
|
mergedSchemas.properties) {
|
|
208
|
-
return
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
230
|
+
return [
|
|
231
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
232
|
+
createAnyOneOf(mergedSchemas),
|
|
233
|
+
createProperties(mergedSchemas),
|
|
234
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
235
|
+
].flat();
|
|
214
236
|
}
|
|
215
237
|
// Handles only anyOf/oneOf
|
|
216
238
|
if (mergedSchemas.oneOf !== undefined ||
|
|
217
239
|
mergedSchemas.anyOf !== undefined) {
|
|
218
|
-
return
|
|
219
|
-
|
|
220
|
-
|
|
240
|
+
return [
|
|
241
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
242
|
+
createAnyOneOf(mergedSchemas),
|
|
243
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
244
|
+
].flat();
|
|
221
245
|
}
|
|
222
246
|
// Handles properties
|
|
223
247
|
if (mergedSchemas.properties !== undefined) {
|
|
224
|
-
return
|
|
225
|
-
|
|
226
|
-
|
|
248
|
+
return [
|
|
249
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
250
|
+
createProperties(mergedSchemas),
|
|
251
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
252
|
+
].flat();
|
|
227
253
|
}
|
|
228
254
|
}
|
|
229
255
|
if (((_g = schema.items) === null || _g === void 0 ? void 0 : _g.type) === "string" ||
|
|
230
256
|
((_h = schema.items) === null || _h === void 0 ? void 0 : _h.type) === "number" ||
|
|
231
257
|
((_j = schema.items) === null || _j === void 0 ? void 0 : _j.type) === "integer" ||
|
|
232
|
-
((_k = schema.items) === null || _k === void 0 ? void 0 : _k.type) === "boolean"
|
|
233
|
-
|
|
258
|
+
((_k = schema.items) === null || _k === void 0 ? void 0 : _k.type) === "boolean" ||
|
|
259
|
+
((_l = schema.items) === null || _l === void 0 ? void 0 : _l.type) === "object") {
|
|
260
|
+
return [
|
|
261
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
262
|
+
createNodes(schema.items),
|
|
263
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
264
|
+
].flat();
|
|
234
265
|
}
|
|
235
266
|
// TODO: clean this up or eliminate it?
|
|
236
|
-
return
|
|
237
|
-
|
|
238
|
-
schema
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
:
|
|
242
|
-
|
|
267
|
+
return [
|
|
268
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
269
|
+
Object.entries(schema.items).map(([key, val]) => createEdges({
|
|
270
|
+
name: key,
|
|
271
|
+
schema: val,
|
|
272
|
+
required: Array.isArray(schema.required)
|
|
273
|
+
? schema.required.includes(key)
|
|
274
|
+
: false,
|
|
275
|
+
})),
|
|
276
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
277
|
+
].flat();
|
|
243
278
|
}
|
|
244
279
|
/**
|
|
245
280
|
* For handling discriminators that do not map to a same-level property
|
|
@@ -338,7 +373,7 @@ function createItems(schema) {
|
|
|
338
373
|
// }),
|
|
339
374
|
// });
|
|
340
375
|
// }
|
|
341
|
-
function createDetailsNode(name, schemaName, schema, required) {
|
|
376
|
+
function createDetailsNode(name, schemaName, schema, required, nullable) {
|
|
342
377
|
return (0, utils_1.create)("SchemaItem", {
|
|
343
378
|
collapsible: true,
|
|
344
379
|
className: "schemaItem",
|
|
@@ -352,6 +387,16 @@ function createDetailsNode(name, schemaName, schema, required) {
|
|
|
352
387
|
style: { opacity: "0.6" },
|
|
353
388
|
children: ` ${schemaName}`,
|
|
354
389
|
}),
|
|
390
|
+
(0, utils_1.guard)((schema.nullable && schema.nullable === true) ||
|
|
391
|
+
(nullable && nullable === true), () => [
|
|
392
|
+
(0, utils_1.create)("strong", {
|
|
393
|
+
style: {
|
|
394
|
+
fontSize: "var(--ifm-code-font-size)",
|
|
395
|
+
color: "var(--openapi-nullable)",
|
|
396
|
+
},
|
|
397
|
+
children: " nullable",
|
|
398
|
+
}),
|
|
399
|
+
]),
|
|
355
400
|
(0, utils_1.guard)(Array.isArray(required)
|
|
356
401
|
? required.includes(name)
|
|
357
402
|
: required === true, () => [
|
|
@@ -454,24 +499,24 @@ function createEdges({ name, schema, required, discriminator, }) {
|
|
|
454
499
|
return createPropertyDiscriminator(name, "string", schema, discriminator, required);
|
|
455
500
|
}
|
|
456
501
|
if (schema.oneOf !== undefined || schema.anyOf !== undefined) {
|
|
457
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
502
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
458
503
|
}
|
|
459
504
|
if (schema.allOf !== undefined) {
|
|
460
505
|
const { mergedSchemas, required, } = mergeAllOf(schema.allOf);
|
|
461
506
|
const mergedSchemaName = (0, schema_1.getSchemaName)(mergedSchemas);
|
|
462
507
|
if (mergedSchemas.oneOf !== undefined ||
|
|
463
508
|
mergedSchemas.anyOf !== undefined) {
|
|
464
|
-
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required);
|
|
509
|
+
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required, schema.nullable);
|
|
465
510
|
}
|
|
466
511
|
if (mergedSchemas.properties !== undefined) {
|
|
467
|
-
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required);
|
|
512
|
+
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required, schema.nullable);
|
|
468
513
|
}
|
|
469
514
|
if (mergedSchemas.additionalProperties !== undefined) {
|
|
470
|
-
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required);
|
|
515
|
+
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required, schema.nullable);
|
|
471
516
|
}
|
|
472
517
|
// array of objects
|
|
473
518
|
if (((_a = mergedSchemas.items) === null || _a === void 0 ? void 0 : _a.properties) !== undefined) {
|
|
474
|
-
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required);
|
|
519
|
+
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required, schema.nullable);
|
|
475
520
|
}
|
|
476
521
|
if (mergedSchemas.readOnly && mergedSchemas.readOnly === true) {
|
|
477
522
|
return undefined;
|
|
@@ -480,25 +525,23 @@ function createEdges({ name, schema, required, discriminator, }) {
|
|
|
480
525
|
collapsible: false,
|
|
481
526
|
name,
|
|
482
527
|
required: Array.isArray(required) ? required.includes(name) : required,
|
|
483
|
-
deprecated: mergedSchemas.deprecated,
|
|
484
|
-
schemaDescription: mergedSchemas.description,
|
|
485
528
|
schemaName: schemaName,
|
|
486
529
|
qualifierMessage: (0, schema_1.getQualifierMessage)(schema),
|
|
487
|
-
|
|
530
|
+
schema: mergedSchemas,
|
|
488
531
|
});
|
|
489
532
|
}
|
|
490
533
|
if (schema.properties !== undefined) {
|
|
491
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
534
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
492
535
|
}
|
|
493
536
|
if (schema.additionalProperties !== undefined) {
|
|
494
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
537
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
495
538
|
}
|
|
496
539
|
// array of objects
|
|
497
540
|
if (((_b = schema.items) === null || _b === void 0 ? void 0 : _b.properties) !== undefined) {
|
|
498
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
541
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
499
542
|
}
|
|
500
543
|
if (((_c = schema.items) === null || _c === void 0 ? void 0 : _c.anyOf) !== undefined || ((_d = schema.items) === null || _d === void 0 ? void 0 : _d.oneOf) !== undefined) {
|
|
501
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
544
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
502
545
|
}
|
|
503
546
|
if (schema.readOnly && schema.readOnly === true) {
|
|
504
547
|
return undefined;
|
|
@@ -508,39 +551,41 @@ function createEdges({ name, schema, required, discriminator, }) {
|
|
|
508
551
|
collapsible: false,
|
|
509
552
|
name,
|
|
510
553
|
required: Array.isArray(required) ? required.includes(name) : required,
|
|
511
|
-
deprecated: schema.deprecated,
|
|
512
|
-
schemaDescription: schema.description,
|
|
513
554
|
schemaName: schemaName,
|
|
514
555
|
qualifierMessage: (0, schema_1.getQualifierMessage)(schema),
|
|
515
|
-
|
|
556
|
+
schema: schema,
|
|
516
557
|
});
|
|
517
558
|
}
|
|
518
559
|
/**
|
|
519
560
|
* Creates a hierarchical level of a schema tree. Nodes produce edges that can branch into sub-nodes with edges, recursively.
|
|
520
561
|
*/
|
|
521
562
|
function createNodes(schema) {
|
|
563
|
+
const nodes = [];
|
|
522
564
|
// if (schema.discriminator !== undefined) {
|
|
523
565
|
// return createDiscriminator(schema);
|
|
524
566
|
// }
|
|
525
567
|
if (schema.oneOf !== undefined || schema.anyOf !== undefined) {
|
|
526
|
-
|
|
568
|
+
nodes.push(createAnyOneOf(schema));
|
|
527
569
|
}
|
|
528
570
|
if (schema.allOf !== undefined) {
|
|
529
571
|
const { mergedSchemas } = mergeAllOf(schema.allOf);
|
|
530
572
|
// allOf seems to always result in properties
|
|
531
573
|
if (mergedSchemas.properties !== undefined) {
|
|
532
|
-
|
|
574
|
+
nodes.push(createProperties(mergedSchemas));
|
|
533
575
|
}
|
|
534
576
|
}
|
|
535
577
|
if (schema.properties !== undefined) {
|
|
536
|
-
|
|
578
|
+
nodes.push(createProperties(schema));
|
|
537
579
|
}
|
|
538
580
|
if (schema.additionalProperties !== undefined) {
|
|
539
|
-
|
|
581
|
+
nodes.push(createAdditionalProperties(schema));
|
|
540
582
|
}
|
|
541
583
|
// TODO: figure out how to handle array of objects
|
|
542
584
|
if (schema.items !== undefined) {
|
|
543
|
-
|
|
585
|
+
nodes.push(createItems(schema));
|
|
586
|
+
}
|
|
587
|
+
if (nodes.length && nodes.length > 0) {
|
|
588
|
+
return nodes.filter(Boolean).flat();
|
|
544
589
|
}
|
|
545
590
|
// primitive
|
|
546
591
|
if (schema.type !== undefined) {
|
|
@@ -566,9 +611,10 @@ function createNodes(schema) {
|
|
|
566
611
|
}
|
|
567
612
|
// Unknown node/schema type should return undefined
|
|
568
613
|
// So far, haven't seen this hit in testing
|
|
569
|
-
return
|
|
614
|
+
return "any";
|
|
570
615
|
}
|
|
571
616
|
function createRequestSchema({ title, body, ...rest }) {
|
|
617
|
+
var _a;
|
|
572
618
|
if (body === undefined ||
|
|
573
619
|
body.content === undefined ||
|
|
574
620
|
Object.keys(body).length === 0 ||
|
|
@@ -603,10 +649,6 @@ function createRequestSchema({ title, body, ...rest }) {
|
|
|
603
649
|
style: { textAlign: "left" },
|
|
604
650
|
children: [
|
|
605
651
|
(0, utils_1.create)("strong", { children: `${title}` }),
|
|
606
|
-
(0, utils_1.guard)(firstBody.type === "array", (format) => (0, utils_1.create)("span", {
|
|
607
|
-
style: { opacity: "0.6" },
|
|
608
|
-
children: ` array`,
|
|
609
|
-
})),
|
|
610
652
|
(0, utils_1.guard)(body.required && body.required === true, () => [
|
|
611
653
|
(0, utils_1.create)("strong", {
|
|
612
654
|
style: {
|
|
@@ -641,7 +683,7 @@ function createRequestSchema({ title, body, ...rest }) {
|
|
|
641
683
|
});
|
|
642
684
|
}
|
|
643
685
|
const randomFirstKey = Object.keys(body.content)[0];
|
|
644
|
-
const firstBody = body.content[randomFirstKey].schema;
|
|
686
|
+
const firstBody = (_a = body.content[randomFirstKey].schema) !== null && _a !== void 0 ? _a : body.content[randomFirstKey];
|
|
645
687
|
if (firstBody === undefined) {
|
|
646
688
|
return undefined;
|
|
647
689
|
}
|