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
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* ========================================================================== */
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.createResponseSchema = 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");
|
|
@@ -47,46 +48,55 @@ exports.mergeAllOf = mergeAllOf;
|
|
|
47
48
|
*/
|
|
48
49
|
function createAnyOneOf(schema) {
|
|
49
50
|
const type = schema.oneOf ? "oneOf" : "anyOf";
|
|
50
|
-
return (0, utils_1.create)("
|
|
51
|
+
return (0, utils_1.create)("li", {
|
|
51
52
|
children: [
|
|
52
|
-
(0, utils_1.create)("
|
|
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
|
-
|
|
89
|
-
|
|
53
|
+
(0, utils_1.create)("span", {
|
|
54
|
+
className: "badge badge--info",
|
|
55
|
+
children: type,
|
|
56
|
+
}),
|
|
57
|
+
(0, utils_1.create)("SchemaTabs", {
|
|
58
|
+
children: schema[type].map((anyOneSchema, index) => {
|
|
59
|
+
const label = anyOneSchema.title
|
|
60
|
+
? anyOneSchema.title
|
|
61
|
+
: `MOD${index + 1}`;
|
|
62
|
+
const anyOneChildren = [];
|
|
63
|
+
if (anyOneSchema.properties !== undefined) {
|
|
64
|
+
anyOneChildren.push(createProperties(anyOneSchema));
|
|
65
|
+
}
|
|
66
|
+
if (anyOneSchema.allOf !== undefined) {
|
|
67
|
+
anyOneChildren.push(createNodes(anyOneSchema));
|
|
68
|
+
}
|
|
69
|
+
if (anyOneSchema.items !== undefined) {
|
|
70
|
+
anyOneChildren.push(createItems(anyOneSchema));
|
|
71
|
+
}
|
|
72
|
+
if (anyOneSchema.type === "string" ||
|
|
73
|
+
anyOneSchema.type === "number" ||
|
|
74
|
+
anyOneSchema.type === "integer" ||
|
|
75
|
+
anyOneSchema.type === "boolean") {
|
|
76
|
+
anyOneChildren.push(createNodes(anyOneSchema));
|
|
77
|
+
}
|
|
78
|
+
if (anyOneChildren.length) {
|
|
79
|
+
if (schema.type === "array") {
|
|
80
|
+
return (0, utils_1.create)("TabItem", {
|
|
81
|
+
label: label,
|
|
82
|
+
value: `${index}-item-properties`,
|
|
83
|
+
children: [
|
|
84
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
85
|
+
anyOneChildren,
|
|
86
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
87
|
+
]
|
|
88
|
+
.filter(Boolean)
|
|
89
|
+
.flat(),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return (0, utils_1.create)("TabItem", {
|
|
93
|
+
label: label,
|
|
94
|
+
value: `${index}-item-properties`,
|
|
95
|
+
children: anyOneChildren,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}),
|
|
90
100
|
}),
|
|
91
101
|
],
|
|
92
102
|
});
|
|
@@ -189,15 +199,27 @@ function createAdditionalProperties(schema) {
|
|
|
189
199
|
}
|
|
190
200
|
// TODO: figure out how to handle array of objects
|
|
191
201
|
function createItems(schema) {
|
|
192
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
202
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
193
203
|
if (((_a = schema.items) === null || _a === void 0 ? void 0 : _a.properties) !== undefined) {
|
|
194
|
-
return
|
|
204
|
+
return [
|
|
205
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
206
|
+
createProperties(schema.items),
|
|
207
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
208
|
+
].flat();
|
|
195
209
|
}
|
|
196
210
|
if (((_b = schema.items) === null || _b === void 0 ? void 0 : _b.additionalProperties) !== undefined) {
|
|
197
|
-
return
|
|
211
|
+
return [
|
|
212
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
213
|
+
createAdditionalProperties(schema.items),
|
|
214
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
215
|
+
].flat();
|
|
198
216
|
}
|
|
199
217
|
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) {
|
|
200
|
-
return
|
|
218
|
+
return [
|
|
219
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
220
|
+
createAnyOneOf(schema.items),
|
|
221
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
222
|
+
].flat();
|
|
201
223
|
}
|
|
202
224
|
if (((_e = schema.items) === null || _e === void 0 ? void 0 : _e.allOf) !== undefined) {
|
|
203
225
|
// TODO: figure out if and how we should pass merged required array
|
|
@@ -206,41 +228,54 @@ function createItems(schema) {
|
|
|
206
228
|
if ((mergedSchemas.oneOf !== undefined ||
|
|
207
229
|
mergedSchemas.anyOf !== undefined) &&
|
|
208
230
|
mergedSchemas.properties) {
|
|
209
|
-
return
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
231
|
+
return [
|
|
232
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
233
|
+
createAnyOneOf(mergedSchemas),
|
|
234
|
+
createProperties(mergedSchemas),
|
|
235
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
236
|
+
].flat();
|
|
215
237
|
}
|
|
216
238
|
// Handles only anyOf/oneOf
|
|
217
239
|
if (mergedSchemas.oneOf !== undefined ||
|
|
218
240
|
mergedSchemas.anyOf !== undefined) {
|
|
219
|
-
return
|
|
220
|
-
|
|
221
|
-
|
|
241
|
+
return [
|
|
242
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
243
|
+
createAnyOneOf(mergedSchemas),
|
|
244
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
245
|
+
].flat();
|
|
222
246
|
}
|
|
223
247
|
// Handles properties
|
|
224
248
|
if (mergedSchemas.properties !== undefined) {
|
|
225
|
-
return
|
|
226
|
-
|
|
227
|
-
|
|
249
|
+
return [
|
|
250
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
251
|
+
createProperties(mergedSchemas),
|
|
252
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
253
|
+
].flat();
|
|
228
254
|
}
|
|
229
255
|
}
|
|
230
256
|
if (((_g = schema.items) === null || _g === void 0 ? void 0 : _g.type) === "string" ||
|
|
231
257
|
((_h = schema.items) === null || _h === void 0 ? void 0 : _h.type) === "number" ||
|
|
232
258
|
((_j = schema.items) === null || _j === void 0 ? void 0 : _j.type) === "integer" ||
|
|
233
|
-
((_k = schema.items) === null || _k === void 0 ? void 0 : _k.type) === "boolean"
|
|
234
|
-
|
|
259
|
+
((_k = schema.items) === null || _k === void 0 ? void 0 : _k.type) === "boolean" ||
|
|
260
|
+
((_l = schema.items) === null || _l === void 0 ? void 0 : _l.type) === "object") {
|
|
261
|
+
return [
|
|
262
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
263
|
+
createNodes(schema.items),
|
|
264
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
265
|
+
].flat();
|
|
235
266
|
}
|
|
236
267
|
// TODO: clean this up or eliminate it?
|
|
237
|
-
return
|
|
238
|
-
|
|
239
|
-
schema
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
:
|
|
243
|
-
|
|
268
|
+
return [
|
|
269
|
+
(0, createArrayBracket_1.createOpeningArrayBracket)(),
|
|
270
|
+
Object.entries(schema.items).map(([key, val]) => createEdges({
|
|
271
|
+
name: key,
|
|
272
|
+
schema: val,
|
|
273
|
+
required: Array.isArray(schema.required)
|
|
274
|
+
? schema.required.includes(key)
|
|
275
|
+
: false,
|
|
276
|
+
})),
|
|
277
|
+
(0, createArrayBracket_1.createClosingArrayBracket)(),
|
|
278
|
+
].flat();
|
|
244
279
|
}
|
|
245
280
|
/**
|
|
246
281
|
* For handling discriminators that do not map to a same-level property
|
|
@@ -339,7 +374,7 @@ function createItems(schema) {
|
|
|
339
374
|
// }),
|
|
340
375
|
// });
|
|
341
376
|
// }
|
|
342
|
-
function createDetailsNode(name, schemaName, schema, required) {
|
|
377
|
+
function createDetailsNode(name, schemaName, schema, required, nullable) {
|
|
343
378
|
return (0, utils_1.create)("SchemaItem", {
|
|
344
379
|
collapsible: true,
|
|
345
380
|
className: "schemaItem",
|
|
@@ -353,7 +388,19 @@ function createDetailsNode(name, schemaName, schema, required) {
|
|
|
353
388
|
style: { opacity: "0.6" },
|
|
354
389
|
children: ` ${schemaName}`,
|
|
355
390
|
}),
|
|
356
|
-
(0, utils_1.guard)(schema.
|
|
391
|
+
(0, utils_1.guard)((schema.nullable && schema.nullable === true) ||
|
|
392
|
+
(nullable && nullable === true), () => [
|
|
393
|
+
(0, utils_1.create)("strong", {
|
|
394
|
+
style: {
|
|
395
|
+
fontSize: "var(--ifm-code-font-size)",
|
|
396
|
+
color: "var(--openapi-nullable)",
|
|
397
|
+
},
|
|
398
|
+
children: " nullable",
|
|
399
|
+
}),
|
|
400
|
+
]),
|
|
401
|
+
(0, utils_1.guard)(Array.isArray(required)
|
|
402
|
+
? required.includes(name)
|
|
403
|
+
: required === true, () => [
|
|
357
404
|
(0, utils_1.create)("strong", {
|
|
358
405
|
style: {
|
|
359
406
|
fontSize: "var(--ifm-code-font-size)",
|
|
@@ -453,24 +500,24 @@ function createEdges({ name, schema, required, discriminator, }) {
|
|
|
453
500
|
return createPropertyDiscriminator(name, "string", schema, discriminator, required);
|
|
454
501
|
}
|
|
455
502
|
if (schema.oneOf !== undefined || schema.anyOf !== undefined) {
|
|
456
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
503
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
457
504
|
}
|
|
458
505
|
if (schema.allOf !== undefined) {
|
|
459
506
|
const { mergedSchemas, required, } = mergeAllOf(schema.allOf);
|
|
460
507
|
const mergedSchemaName = (0, schema_1.getSchemaName)(mergedSchemas);
|
|
461
508
|
if (mergedSchemas.oneOf !== undefined ||
|
|
462
509
|
mergedSchemas.anyOf !== undefined) {
|
|
463
|
-
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required);
|
|
510
|
+
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required, schema.nullable);
|
|
464
511
|
}
|
|
465
512
|
if (mergedSchemas.properties !== undefined) {
|
|
466
|
-
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required);
|
|
513
|
+
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required, schema.nullable);
|
|
467
514
|
}
|
|
468
515
|
if (mergedSchemas.additionalProperties !== undefined) {
|
|
469
|
-
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required);
|
|
516
|
+
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required, schema.nullable);
|
|
470
517
|
}
|
|
471
518
|
// array of objects
|
|
472
519
|
if (((_a = mergedSchemas.items) === null || _a === void 0 ? void 0 : _a.properties) !== undefined) {
|
|
473
|
-
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required);
|
|
520
|
+
return createDetailsNode(name, mergedSchemaName, mergedSchemas, required, schema.nullable);
|
|
474
521
|
}
|
|
475
522
|
if (mergedSchemas.writeOnly && mergedSchemas.writeOnly === true) {
|
|
476
523
|
return undefined;
|
|
@@ -479,25 +526,23 @@ function createEdges({ name, schema, required, discriminator, }) {
|
|
|
479
526
|
collapsible: false,
|
|
480
527
|
name,
|
|
481
528
|
required: false,
|
|
482
|
-
deprecated: mergedSchemas.deprecated,
|
|
483
|
-
schemaDescription: mergedSchemas.description,
|
|
484
529
|
schemaName: schemaName,
|
|
485
530
|
qualifierMessage: (0, schema_1.getQualifierMessage)(schema),
|
|
486
|
-
|
|
531
|
+
schema: mergedSchemas,
|
|
487
532
|
});
|
|
488
533
|
}
|
|
489
534
|
if (schema.properties !== undefined) {
|
|
490
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
535
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
491
536
|
}
|
|
492
537
|
if (schema.additionalProperties !== undefined) {
|
|
493
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
538
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
494
539
|
}
|
|
495
540
|
// array of objects
|
|
496
541
|
if (((_b = schema.items) === null || _b === void 0 ? void 0 : _b.properties) !== undefined) {
|
|
497
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
542
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
498
543
|
}
|
|
499
544
|
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) {
|
|
500
|
-
return createDetailsNode(name, schemaName, schema, required);
|
|
545
|
+
return createDetailsNode(name, schemaName, schema, required, schema.nullable);
|
|
501
546
|
}
|
|
502
547
|
if (schema.writeOnly && schema.writeOnly === true) {
|
|
503
548
|
return undefined;
|
|
@@ -507,40 +552,43 @@ function createEdges({ name, schema, required, discriminator, }) {
|
|
|
507
552
|
collapsible: false,
|
|
508
553
|
name,
|
|
509
554
|
required: false,
|
|
510
|
-
deprecated: schema.deprecated,
|
|
511
|
-
schemaDescription: schema.description,
|
|
512
555
|
schemaName: schemaName,
|
|
513
556
|
qualifierMessage: (0, schema_1.getQualifierMessage)(schema),
|
|
514
|
-
|
|
557
|
+
schema: schema,
|
|
515
558
|
});
|
|
516
559
|
}
|
|
517
560
|
/**
|
|
518
561
|
* Creates a hierarchical level of a schema tree. Nodes produce edges that can branch into sub-nodes with edges, recursively.
|
|
519
562
|
*/
|
|
520
563
|
function createNodes(schema) {
|
|
564
|
+
const nodes = [];
|
|
521
565
|
// if (schema.discriminator !== undefined) {
|
|
522
566
|
// return createDiscriminator(schema);
|
|
523
567
|
// }
|
|
524
568
|
if (schema.oneOf !== undefined || schema.anyOf !== undefined) {
|
|
525
|
-
|
|
569
|
+
nodes.push(createAnyOneOf(schema));
|
|
526
570
|
}
|
|
527
571
|
if (schema.allOf !== undefined) {
|
|
528
572
|
const { mergedSchemas } = mergeAllOf(schema.allOf);
|
|
529
|
-
// allOf seems to always result in properties
|
|
530
573
|
if (mergedSchemas.properties !== undefined) {
|
|
531
|
-
|
|
574
|
+
nodes.push(createProperties(mergedSchemas));
|
|
575
|
+
}
|
|
576
|
+
if (mergedSchemas.items !== undefined) {
|
|
577
|
+
nodes.push(createItems(mergedSchemas));
|
|
532
578
|
}
|
|
533
579
|
}
|
|
534
580
|
if (schema.properties !== undefined) {
|
|
535
|
-
|
|
581
|
+
nodes.push(createProperties(schema));
|
|
536
582
|
}
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
return createAdditionalProperties(schema);
|
|
583
|
+
if (schema.additionalProperties !== undefined) {
|
|
584
|
+
nodes.push(createAdditionalProperties(schema));
|
|
540
585
|
}
|
|
541
586
|
// TODO: figure out how to handle array of objects
|
|
542
587
|
if (schema.items !== undefined) {
|
|
543
|
-
|
|
588
|
+
nodes.push(createItems(schema));
|
|
589
|
+
}
|
|
590
|
+
if (nodes.length && nodes.length > 0) {
|
|
591
|
+
return nodes.filter(Boolean).flat();
|
|
544
592
|
}
|
|
545
593
|
// primitive
|
|
546
594
|
if (schema.type !== undefined) {
|
|
@@ -566,7 +614,7 @@ function createNodes(schema) {
|
|
|
566
614
|
}
|
|
567
615
|
// Unknown node/schema type should return undefined
|
|
568
616
|
// So far, haven't seen this hit in testing
|
|
569
|
-
return
|
|
617
|
+
return "any";
|
|
570
618
|
}
|
|
571
619
|
function createResponseSchema({ title, body, ...rest }) {
|
|
572
620
|
if (body === undefined ||
|
|
@@ -581,9 +629,10 @@ function createResponseSchema({ title, body, ...rest }) {
|
|
|
581
629
|
return (0, utils_1.create)("MimeTabs", {
|
|
582
630
|
schemaType: "response",
|
|
583
631
|
children: mimeTypes.map((mimeType) => {
|
|
632
|
+
var _a;
|
|
584
633
|
const responseExamples = body.content[mimeType].examples;
|
|
585
634
|
const responseExample = body.content[mimeType].example;
|
|
586
|
-
const firstBody = body.content[mimeType].schema;
|
|
635
|
+
const firstBody = (_a = body.content[mimeType].schema) !== null && _a !== void 0 ? _a : body.content[mimeType];
|
|
587
636
|
if (firstBody === undefined &&
|
|
588
637
|
responseExample === undefined &&
|
|
589
638
|
responseExamples === undefined) {
|
|
@@ -616,10 +665,6 @@ function createResponseSchema({ title, body, ...rest }) {
|
|
|
616
665
|
style: { textAlign: "left" },
|
|
617
666
|
children: [
|
|
618
667
|
(0, utils_1.create)("strong", { children: `${title}` }),
|
|
619
|
-
(0, utils_1.guard)(firstBody.type === "array", (format) => (0, utils_1.create)("span", {
|
|
620
|
-
style: { opacity: "0.6" },
|
|
621
|
-
children: ` array`,
|
|
622
|
-
})),
|
|
623
668
|
(0, utils_1.guard)(body.required && body.required === true, () => [
|
|
624
669
|
(0, utils_1.create)("strong", {
|
|
625
670
|
style: {
|
|
@@ -66,7 +66,9 @@ function createResponseHeaders(responseHeaders) {
|
|
|
66
66
|
style: { marginLeft: "1rem" },
|
|
67
67
|
children: [
|
|
68
68
|
Object.entries(responseHeaders).map(([headerName, headerObj]) => {
|
|
69
|
-
|
|
69
|
+
var _a, _b;
|
|
70
|
+
const { description, example } = headerObj;
|
|
71
|
+
const type = (_b = (_a = headerObj.schema) === null || _a === void 0 ? void 0 : _a.type) !== null && _b !== void 0 ? _b : "any";
|
|
70
72
|
return (0, utils_1.create)("li", {
|
|
71
73
|
className: "schemaItem",
|
|
72
74
|
children: [
|
|
@@ -110,12 +112,10 @@ function createResponseExamples(responseExamples, mimeType) {
|
|
|
110
112
|
language = "xml";
|
|
111
113
|
}
|
|
112
114
|
return Object.entries(responseExamples).map(([exampleName, exampleValue]) => {
|
|
113
|
-
const camelToSpaceName = exampleName.replace(/([A-Z])/g, " $1");
|
|
114
|
-
let finalFormattedName = camelToSpaceName.charAt(0).toUpperCase() + camelToSpaceName.slice(1);
|
|
115
115
|
if (typeof exampleValue.value === "object") {
|
|
116
116
|
return (0, utils_1.create)("TabItem", {
|
|
117
|
-
label: `${
|
|
118
|
-
value: `${
|
|
117
|
+
label: `${exampleName}`,
|
|
118
|
+
value: `${exampleName}`,
|
|
119
119
|
children: [
|
|
120
120
|
(0, utils_2.guard)(exampleValue.summary, (summary) => [
|
|
121
121
|
(0, utils_1.create)("p", {
|
|
@@ -130,8 +130,8 @@ function createResponseExamples(responseExamples, mimeType) {
|
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
132
|
return (0, utils_1.create)("TabItem", {
|
|
133
|
-
label: `${
|
|
134
|
-
value: `${
|
|
133
|
+
label: `${exampleName}`,
|
|
134
|
+
value: `${exampleName}`,
|
|
135
135
|
children: [
|
|
136
136
|
(0, utils_2.guard)(exampleValue.summary, (summary) => [
|
|
137
137
|
(0, utils_1.create)("p", {
|
package/lib/markdown/index.js
CHANGED
|
@@ -48,7 +48,7 @@ exports.createApiPageMD = createApiPageMD;
|
|
|
48
48
|
function createInfoPageMD({ info: { title, version, description, contact, license, termsOfService, logo, darkLogo, }, securitySchemes, downloadUrl, }) {
|
|
49
49
|
return (0, utils_1.render)([
|
|
50
50
|
`import ApiLogo from "@theme/ApiLogo";\n`,
|
|
51
|
-
`import
|
|
51
|
+
`import SchemaTabs from "@theme/SchemaTabs";\n`,
|
|
52
52
|
`import TabItem from "@theme/TabItem";\n`,
|
|
53
53
|
`import Export from "@theme/ApiDemoPanel/Export";\n\n`,
|
|
54
54
|
(0, createVersionBadge_1.createVersionBadge)(version),
|
|
@@ -11,13 +11,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.sampleRequestFromSchema = void 0;
|
|
13
13
|
const chalk_1 = __importDefault(require("chalk"));
|
|
14
|
+
const merge_1 = __importDefault(require("lodash/merge"));
|
|
14
15
|
const createRequestSchema_1 = require("../markdown/createRequestSchema");
|
|
15
16
|
const primitives = {
|
|
16
17
|
string: {
|
|
17
18
|
default: () => "string",
|
|
18
19
|
email: () => "user@example.com",
|
|
19
20
|
date: () => new Date().toISOString().substring(0, 10),
|
|
20
|
-
"date-time": () => new Date().toISOString()
|
|
21
|
+
"date-time": () => new Date().toISOString(),
|
|
21
22
|
uuid: () => "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
22
23
|
hostname: () => "example.com",
|
|
23
24
|
ipv4: () => "198.51.100.42",
|
|
@@ -60,15 +61,27 @@ function sampleRequestFromProp(name, prop, obj) {
|
|
|
60
61
|
}
|
|
61
62
|
const sampleRequestFromSchema = (schema = {}) => {
|
|
62
63
|
try {
|
|
63
|
-
|
|
64
|
+
// deep copy schema before processing
|
|
65
|
+
let schemaCopy = JSON.parse(JSON.stringify(schema));
|
|
66
|
+
let { type, example, allOf, properties, items, oneOf, anyOf } = schemaCopy;
|
|
64
67
|
if (example !== undefined) {
|
|
65
68
|
return example;
|
|
66
69
|
}
|
|
67
70
|
if (oneOf) {
|
|
71
|
+
if (properties) {
|
|
72
|
+
const combinedSchemas = (0, merge_1.default)(schemaCopy, oneOf[0]);
|
|
73
|
+
delete combinedSchemas.oneOf;
|
|
74
|
+
return (0, exports.sampleRequestFromSchema)(combinedSchemas);
|
|
75
|
+
}
|
|
68
76
|
// Just go with first schema
|
|
69
77
|
return (0, exports.sampleRequestFromSchema)(oneOf[0]);
|
|
70
78
|
}
|
|
71
79
|
if (anyOf) {
|
|
80
|
+
if (properties) {
|
|
81
|
+
const combinedSchemas = (0, merge_1.default)(schemaCopy, anyOf[0]);
|
|
82
|
+
delete combinedSchemas.anyOf;
|
|
83
|
+
return (0, exports.sampleRequestFromSchema)(combinedSchemas);
|
|
84
|
+
}
|
|
72
85
|
// Just go with first schema
|
|
73
86
|
return (0, exports.sampleRequestFromSchema)(anyOf[0]);
|
|
74
87
|
}
|
|
@@ -81,6 +94,11 @@ const sampleRequestFromSchema = (schema = {}) => {
|
|
|
81
94
|
}
|
|
82
95
|
}
|
|
83
96
|
}
|
|
97
|
+
if (properties) {
|
|
98
|
+
const combinedSchemas = (0, merge_1.default)(schemaCopy, mergedSchemas);
|
|
99
|
+
delete combinedSchemas.allOf;
|
|
100
|
+
return (0, exports.sampleRequestFromSchema)(combinedSchemas);
|
|
101
|
+
}
|
|
84
102
|
return (0, exports.sampleRequestFromSchema)(mergedSchemas);
|
|
85
103
|
}
|
|
86
104
|
if (!type) {
|
|
@@ -133,16 +151,17 @@ const sampleRequestFromSchema = (schema = {}) => {
|
|
|
133
151
|
}
|
|
134
152
|
return [(0, exports.sampleRequestFromSchema)(items)];
|
|
135
153
|
}
|
|
136
|
-
if (
|
|
137
|
-
if (
|
|
138
|
-
return
|
|
154
|
+
if (schemaCopy.enum) {
|
|
155
|
+
if (schemaCopy.default) {
|
|
156
|
+
return schemaCopy.default;
|
|
139
157
|
}
|
|
140
|
-
return normalizeArray(
|
|
158
|
+
return normalizeArray(schemaCopy.enum)[0];
|
|
141
159
|
}
|
|
142
|
-
if ((schema.readOnly && schema.readOnly === true) ||
|
|
160
|
+
if ((schema.readOnly && schema.readOnly === true) ||
|
|
161
|
+
schemaCopy.deprecated) {
|
|
143
162
|
return undefined;
|
|
144
163
|
}
|
|
145
|
-
return primitive(
|
|
164
|
+
return primitive(schemaCopy);
|
|
146
165
|
}
|
|
147
166
|
catch (err) {
|
|
148
167
|
console.error(chalk_1.default.yellow("WARNING: failed to create example from schema object:", err));
|
|
@@ -11,13 +11,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.sampleResponseFromSchema = void 0;
|
|
13
13
|
const chalk_1 = __importDefault(require("chalk"));
|
|
14
|
+
const merge_1 = __importDefault(require("lodash/merge"));
|
|
14
15
|
const createResponseSchema_1 = require("../markdown/createResponseSchema");
|
|
15
16
|
const primitives = {
|
|
16
17
|
string: {
|
|
17
18
|
default: () => "string",
|
|
18
19
|
email: () => "user@example.com",
|
|
19
20
|
date: () => new Date().toISOString().substring(0, 10),
|
|
20
|
-
"date-time": () => new Date().toISOString()
|
|
21
|
+
"date-time": () => new Date().toISOString(),
|
|
21
22
|
uuid: () => "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
22
23
|
hostname: () => "example.com",
|
|
23
24
|
ipv4: () => "198.51.100.42",
|
|
@@ -60,7 +61,9 @@ function sampleResponseFromProp(name, prop, obj) {
|
|
|
60
61
|
}
|
|
61
62
|
const sampleResponseFromSchema = (schema = {}) => {
|
|
62
63
|
try {
|
|
63
|
-
|
|
64
|
+
// deep copy schema before processing
|
|
65
|
+
let schemaCopy = JSON.parse(JSON.stringify(schema));
|
|
66
|
+
let { type, example, allOf, properties, items, oneOf, anyOf } = schemaCopy;
|
|
64
67
|
if (example !== undefined) {
|
|
65
68
|
return example;
|
|
66
69
|
}
|
|
@@ -74,13 +77,28 @@ const sampleResponseFromSchema = (schema = {}) => {
|
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
}
|
|
80
|
+
if (properties) {
|
|
81
|
+
const combinedSchemas = (0, merge_1.default)(schemaCopy, mergedSchemas);
|
|
82
|
+
delete combinedSchemas.allOf;
|
|
83
|
+
return (0, exports.sampleResponseFromSchema)(combinedSchemas);
|
|
84
|
+
}
|
|
77
85
|
return (0, exports.sampleResponseFromSchema)(mergedSchemas);
|
|
78
86
|
}
|
|
79
87
|
if (oneOf) {
|
|
88
|
+
if (properties) {
|
|
89
|
+
const combinedSchemas = (0, merge_1.default)(schemaCopy, oneOf[0]);
|
|
90
|
+
delete combinedSchemas.oneOf;
|
|
91
|
+
return (0, exports.sampleResponseFromSchema)(combinedSchemas);
|
|
92
|
+
}
|
|
80
93
|
// Just go with first schema
|
|
81
94
|
return (0, exports.sampleResponseFromSchema)(oneOf[0]);
|
|
82
95
|
}
|
|
83
96
|
if (anyOf) {
|
|
97
|
+
if (properties) {
|
|
98
|
+
const combinedSchemas = (0, merge_1.default)(schemaCopy, anyOf[0]);
|
|
99
|
+
delete combinedSchemas.anyOf;
|
|
100
|
+
return (0, exports.sampleResponseFromSchema)(combinedSchemas);
|
|
101
|
+
}
|
|
84
102
|
// Just go with first schema
|
|
85
103
|
return (0, exports.sampleResponseFromSchema)(anyOf[0]);
|
|
86
104
|
}
|
|
@@ -134,16 +152,17 @@ const sampleResponseFromSchema = (schema = {}) => {
|
|
|
134
152
|
}
|
|
135
153
|
return [(0, exports.sampleResponseFromSchema)(items)];
|
|
136
154
|
}
|
|
137
|
-
if (
|
|
138
|
-
if (
|
|
139
|
-
return
|
|
155
|
+
if (schemaCopy.enum) {
|
|
156
|
+
if (schemaCopy.default) {
|
|
157
|
+
return schemaCopy.default;
|
|
140
158
|
}
|
|
141
|
-
return normalizeArray(
|
|
159
|
+
return normalizeArray(schemaCopy.enum)[0];
|
|
142
160
|
}
|
|
143
|
-
if ((
|
|
161
|
+
if ((schemaCopy.writeOnly && schemaCopy.writeOnly === true) ||
|
|
162
|
+
schemaCopy.deprecated) {
|
|
144
163
|
return undefined;
|
|
145
164
|
}
|
|
146
|
-
return primitive(
|
|
165
|
+
return primitive(schemaCopy);
|
|
147
166
|
}
|
|
148
167
|
catch (err) {
|
|
149
168
|
console.error(chalk_1.default.yellow("WARNING: failed to create example from schema object:", err));
|
package/lib/openapi/openapi.js
CHANGED
|
@@ -66,7 +66,7 @@ function createItems(openapiData, options, sidebarOptions) {
|
|
|
66
66
|
let items = [];
|
|
67
67
|
const infoIdSpaces = openapiData.info.title.replace(" ", "-").toLowerCase();
|
|
68
68
|
const infoId = (0, kebabCase_1.default)(infoIdSpaces);
|
|
69
|
-
if (openapiData.info.description) {
|
|
69
|
+
if (openapiData.info.description || openapiData.info.title) {
|
|
70
70
|
// Only create an info page if we have a description.
|
|
71
71
|
const infoDescription = (_a = openapiData.info) === null || _a === void 0 ? void 0 : _a.description;
|
|
72
72
|
let splitDescription;
|
|
@@ -173,6 +173,9 @@ function createItems(openapiData, options, sidebarOptions) {
|
|
|
173
173
|
.replace(/\s+$/, "")
|
|
174
174
|
: "",
|
|
175
175
|
...((options === null || options === void 0 ? void 0 : options.proxy) && { proxy: options.proxy }),
|
|
176
|
+
...((options === null || options === void 0 ? void 0 : options.hideSendButton) && {
|
|
177
|
+
hide_send_button: options.hideSendButton,
|
|
178
|
+
}),
|
|
176
179
|
},
|
|
177
180
|
api: {
|
|
178
181
|
...defaults,
|
|
@@ -264,6 +267,9 @@ function createItems(openapiData, options, sidebarOptions) {
|
|
|
264
267
|
.replace(/\s+$/, "")
|
|
265
268
|
: "",
|
|
266
269
|
...((options === null || options === void 0 ? void 0 : options.proxy) && { proxy: options.proxy }),
|
|
270
|
+
...((options === null || options === void 0 ? void 0 : options.hideSendButton) && {
|
|
271
|
+
hide_send_button: options.hideSendButton,
|
|
272
|
+
}),
|
|
267
273
|
},
|
|
268
274
|
api: {
|
|
269
275
|
...defaults,
|
|
@@ -114,6 +114,19 @@ async function loadAndResolveSpec(specUrlOrObject) {
|
|
|
114
114
|
// Force dereference ?
|
|
115
115
|
// bundleOpts["dereference"] = true;
|
|
116
116
|
const { bundle: { parsed }, } = await (0, openapi_core_1.bundle)(bundleOpts);
|
|
117
|
+
//Pre-processing before resolving JSON refs
|
|
118
|
+
if (parsed.components) {
|
|
119
|
+
for (let [component, type] of Object.entries(parsed.components)) {
|
|
120
|
+
if (component === "schemas") {
|
|
121
|
+
for (let [schemaKey, schemaValue] of Object.entries(type)) {
|
|
122
|
+
const title = schemaValue["title"];
|
|
123
|
+
if (!title) {
|
|
124
|
+
schemaValue.title = schemaKey;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
117
130
|
const resolved = await resolveJsonRefs(parsed);
|
|
118
131
|
// Force serialization and replace circular $ref pointers
|
|
119
132
|
// @ts-ignore
|
package/lib/options.js
CHANGED
|
@@ -25,6 +25,7 @@ exports.OptionsSchema = utils_validation_1.Joi.object({
|
|
|
25
25
|
outputDir: utils_validation_1.Joi.string().required(),
|
|
26
26
|
template: utils_validation_1.Joi.string(),
|
|
27
27
|
downloadUrl: utils_validation_1.Joi.string(),
|
|
28
|
+
hideSendButton: utils_validation_1.Joi.boolean(),
|
|
28
29
|
sidebarOptions: sidebarOptions,
|
|
29
30
|
version: utils_validation_1.Joi.string().when("versions", {
|
|
30
31
|
is: utils_validation_1.Joi.exist(),
|