docusaurus-theme-openapi-docs 4.7.0 → 5.0.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 +2 -0
- package/lib/markdown/schema.js +63 -9
- package/lib/theme/ApiExplorer/Accept/index.js +2 -1
- package/lib/theme/ApiExplorer/Authorization/index.js +12 -18
- package/lib/theme/ApiExplorer/Authorization/slice.d.ts +1 -1
- package/lib/theme/ApiExplorer/Body/FileArrayFormBodyItem/index.js +0 -4
- package/lib/theme/ApiExplorer/Body/FormBodyItem/index.d.ts +6 -2
- package/lib/theme/ApiExplorer/Body/FormBodyItem/index.js +191 -38
- package/lib/theme/ApiExplorer/Body/index.d.ts +1 -1
- package/lib/theme/ApiExplorer/Body/index.js +86 -15
- package/lib/theme/ApiExplorer/Body/resolveSchemaWithSelections.d.ts +1 -1
- package/lib/theme/ApiExplorer/Body/slice.d.ts +136 -544
- package/lib/theme/ApiExplorer/CodeSnippets/index.d.ts +2 -1
- package/lib/theme/ApiExplorer/CodeSnippets/index.js +4 -0
- package/lib/theme/ApiExplorer/CodeTabs/index.js +15 -16
- package/lib/theme/ApiExplorer/ContentType/index.js +7 -2
- package/lib/theme/ApiExplorer/EncodingSelection/slice.d.ts +17 -0
- package/lib/theme/ApiExplorer/EncodingSelection/slice.js +29 -0
- package/lib/theme/ApiExplorer/EncodingSelection/useResolvedEncoding.d.ts +12 -0
- package/lib/theme/ApiExplorer/EncodingSelection/useResolvedEncoding.js +39 -0
- package/lib/theme/ApiExplorer/FormItem/_FormItem.scss +0 -5
- package/lib/theme/ApiExplorer/FormItem/index.d.ts +1 -4
- package/lib/theme/ApiExplorer/FormItem/index.js +2 -26
- package/lib/theme/ApiExplorer/FormLabel/_FormLabel.scss +4 -0
- package/lib/theme/ApiExplorer/FormLabel/index.d.ts +9 -0
- package/lib/theme/ApiExplorer/FormLabel/index.js +50 -0
- package/lib/theme/ApiExplorer/FormMultiSelect/index.d.ts +4 -1
- package/lib/theme/ApiExplorer/FormMultiSelect/index.js +97 -19
- package/lib/theme/ApiExplorer/FormSelect/index.d.ts +6 -1
- package/lib/theme/ApiExplorer/FormSelect/index.js +96 -15
- package/lib/theme/ApiExplorer/FormTextInput/index.d.ts +4 -1
- package/lib/theme/ApiExplorer/FormTextInput/index.js +71 -1
- package/lib/theme/ApiExplorer/MethodEndpoint/index.js +28 -0
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.d.ts +4 -1
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.js +11 -3
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.d.ts +4 -1
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.js +4 -1
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.d.ts +4 -1
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.js +6 -2
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.d.ts +4 -1
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.js +6 -2
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.d.ts +4 -1
- package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.js +8 -3
- package/lib/theme/ApiExplorer/ParamOptions/_ParamOptions.scss +0 -9
- package/lib/theme/ApiExplorer/ParamOptions/index.d.ts +10 -0
- package/lib/theme/ApiExplorer/ParamOptions/index.js +55 -5
- package/lib/theme/ApiExplorer/ParamOptions/slice.d.ts +1 -1
- package/lib/theme/ApiExplorer/Request/_Request.scss +11 -0
- package/lib/theme/ApiExplorer/Request/index.d.ts +1 -1
- package/lib/theme/ApiExplorer/Request/index.js +19 -5
- package/lib/theme/ApiExplorer/Request/makeRequest.d.ts +3 -1
- package/lib/theme/ApiExplorer/Request/makeRequest.js +19 -3
- package/lib/theme/ApiExplorer/Response/_Response.scss +11 -0
- package/lib/theme/ApiExplorer/Response/index.d.ts +1 -1
- package/lib/theme/ApiExplorer/Response/index.js +98 -12
- package/lib/theme/ApiExplorer/SecuritySchemes/index.js +2 -2
- package/lib/theme/ApiExplorer/Server/index.d.ts +4 -1
- package/lib/theme/ApiExplorer/Server/index.js +6 -3
- package/lib/theme/ApiExplorer/Server/slice.d.ts +1 -1
- package/lib/theme/ApiExplorer/buildPostmanRequest.d.ts +5 -2
- package/lib/theme/ApiExplorer/buildPostmanRequest.js +46 -5
- package/lib/theme/ApiExplorer/index.d.ts +1 -1
- package/lib/theme/ApiExplorer/index.js +1 -0
- package/lib/theme/ApiExplorer/persistenceMiddleware.d.ts +2 -0
- package/lib/theme/ApiItem/hooks.d.ts +1 -0
- package/lib/theme/ApiItem/index.js +2 -1
- package/lib/theme/ApiItem/store.d.ts +6 -0
- package/lib/theme/ApiItem/store.js +11 -7
- package/lib/theme/ApiTabs/index.js +10 -11
- package/lib/theme/DiscriminatorTabs/index.js +10 -11
- package/lib/theme/MimeTabs/index.js +10 -11
- package/lib/theme/OperationTabs/index.js +10 -11
- package/lib/theme/ParamsDetails/index.js +2 -2
- package/lib/theme/ParamsItem/index.js +27 -0
- package/lib/theme/RequestSchema/index.d.ts +1 -1
- package/lib/theme/RequestSchema/index.js +174 -111
- package/lib/theme/ResponseHeaders/index.js +0 -1
- package/lib/theme/ResponseSchema/index.d.ts +1 -1
- package/lib/theme/Schema/index.d.ts +1 -1
- package/lib/theme/Schema/index.js +91 -23
- package/lib/theme/SchemaItem/index.js +6 -1
- package/lib/theme/SchemaTabs/index.d.ts +1 -1
- package/lib/theme/SchemaTabs/index.js +31 -12
- package/lib/theme/StatusCodes/index.d.ts +1 -1
- package/lib/theme/styles.scss +1 -0
- package/lib/theme/translationIds.d.ts +3 -0
- package/lib/theme/translationIds.js +3 -0
- package/package.json +9 -8
- package/src/index.ts +2 -0
- package/src/markdown/schema.ts +69 -13
- package/src/theme/ApiExplorer/Accept/index.tsx +2 -1
- package/src/theme/ApiExplorer/Authorization/index.tsx +27 -33
- package/src/theme/ApiExplorer/Authorization/slice.ts +1 -1
- package/src/theme/ApiExplorer/Body/FileArrayFormBodyItem/index.tsx +2 -5
- package/src/theme/ApiExplorer/Body/FormBodyItem/index.tsx +119 -39
- package/src/theme/ApiExplorer/Body/index.tsx +88 -21
- package/src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts +1 -1
- package/src/theme/ApiExplorer/CodeSnippets/index.tsx +9 -1
- package/src/theme/ApiExplorer/CodeTabs/index.tsx +19 -19
- package/src/theme/ApiExplorer/ContentType/index.tsx +7 -4
- package/src/theme/ApiExplorer/EncodingSelection/slice.ts +31 -0
- package/src/theme/ApiExplorer/EncodingSelection/useResolvedEncoding.ts +43 -0
- package/src/theme/ApiExplorer/FormItem/_FormItem.scss +0 -5
- package/src/theme/ApiExplorer/FormItem/index.tsx +2 -17
- package/src/theme/ApiExplorer/FormLabel/_FormLabel.scss +4 -0
- package/src/theme/ApiExplorer/FormLabel/index.tsx +43 -0
- package/src/theme/ApiExplorer/FormMultiSelect/index.tsx +40 -20
- package/src/theme/ApiExplorer/FormSelect/index.tsx +41 -15
- package/src/theme/ApiExplorer/FormTextInput/index.tsx +15 -1
- package/src/theme/ApiExplorer/MethodEndpoint/index.tsx +21 -0
- package/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx +13 -2
- package/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx +12 -1
- package/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx +14 -2
- package/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx +14 -2
- package/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx +16 -3
- package/src/theme/ApiExplorer/ParamOptions/_ParamOptions.scss +0 -9
- package/src/theme/ApiExplorer/ParamOptions/index.tsx +97 -11
- package/src/theme/ApiExplorer/ParamOptions/slice.ts +1 -1
- package/src/theme/ApiExplorer/Request/_Request.scss +11 -0
- package/src/theme/ApiExplorer/Request/index.tsx +22 -10
- package/src/theme/ApiExplorer/Request/makeRequest.ts +19 -3
- package/src/theme/ApiExplorer/Response/_Response.scss +11 -0
- package/src/theme/ApiExplorer/Response/index.tsx +37 -17
- package/src/theme/ApiExplorer/SecuritySchemes/index.tsx +2 -3
- package/src/theme/ApiExplorer/Server/index.tsx +10 -3
- package/src/theme/ApiExplorer/Server/slice.ts +1 -1
- package/src/theme/ApiExplorer/buildPostmanRequest.ts +53 -6
- package/src/theme/ApiExplorer/index.tsx +2 -1
- package/src/theme/ApiItem/index.tsx +3 -2
- package/src/theme/ApiItem/store.ts +2 -0
- package/src/theme/ApiTabs/index.tsx +14 -19
- package/src/theme/DiscriminatorTabs/index.tsx +14 -19
- package/src/theme/MimeTabs/index.tsx +15 -19
- package/src/theme/OperationTabs/index.tsx +14 -19
- package/src/theme/ParamsDetails/index.tsx +2 -3
- package/src/theme/ParamsItem/index.tsx +25 -0
- package/src/theme/RequestSchema/index.tsx +144 -87
- package/src/theme/ResponseHeaders/index.tsx +1 -2
- package/src/theme/ResponseSchema/index.tsx +1 -1
- package/src/theme/Schema/index.tsx +112 -27
- package/src/theme/SchemaItem/index.tsx +6 -1
- package/src/theme/SchemaTabs/index.tsx +42 -21
- package/src/theme/StatusCodes/index.tsx +1 -1
- package/src/theme/styles.scss +1 -0
- package/src/theme/translationIds.ts +3 -0
- package/src/theme-classic.d.ts +25 -1
- package/src/types.d.ts +15 -52
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -22,7 +22,7 @@ import SchemaTabs from "@theme/SchemaTabs";
|
|
|
22
22
|
import SkeletonLoader from "@theme/SkeletonLoader";
|
|
23
23
|
import TabItem from "@theme/TabItem";
|
|
24
24
|
import { OPENAPI_SCHEMA, OPENAPI_SCHEMA_ITEM } from "@theme/translationIds";
|
|
25
|
-
import { MediaTypeObject } from "docusaurus-plugin-openapi-docs/
|
|
25
|
+
import type { MediaTypeObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
|
|
26
26
|
|
|
27
27
|
interface Props {
|
|
28
28
|
style?: React.CSSProperties;
|
|
@@ -21,16 +21,11 @@ import { OPENAPI_SCHEMA_ITEM } from "@theme/translationIds";
|
|
|
21
21
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
22
22
|
import { merge } from "allof-merge";
|
|
23
23
|
import clsx from "clsx";
|
|
24
|
-
import {
|
|
25
|
-
getQualifierMessage,
|
|
26
|
-
getSchemaName,
|
|
27
|
-
} from "docusaurus-plugin-openapi-docs/lib/markdown/schema";
|
|
28
|
-
import {
|
|
29
|
-
SchemaObject,
|
|
30
|
-
SchemaType,
|
|
31
|
-
} from "docusaurus-plugin-openapi-docs/lib/openapi/types";
|
|
32
24
|
import isEmpty from "lodash/isEmpty";
|
|
33
25
|
|
|
26
|
+
import { getQualifierMessage, getSchemaName } from "../../markdown/schema";
|
|
27
|
+
import type { SchemaObject } from "../../types.d";
|
|
28
|
+
|
|
34
29
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
35
30
|
// const jsonSchemaMergeAllOf = require("json-schema-merge-allof");
|
|
36
31
|
|
|
@@ -41,7 +36,81 @@ const mergeAllOf = (allOf: any) => {
|
|
|
41
36
|
|
|
42
37
|
const mergedSchemas = merge(allOf, { onMergeError });
|
|
43
38
|
|
|
44
|
-
return mergedSchemas;
|
|
39
|
+
return mergedSchemas ?? {};
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Recursively searches for a property in a schema, including nested
|
|
44
|
+
* oneOf, anyOf, and allOf structures. This is needed for discriminators
|
|
45
|
+
* where the property definition may be in a nested schema.
|
|
46
|
+
*/
|
|
47
|
+
const findProperty = (
|
|
48
|
+
schema: SchemaObject,
|
|
49
|
+
propertyName: string
|
|
50
|
+
): SchemaObject | undefined => {
|
|
51
|
+
// Check direct properties first
|
|
52
|
+
if (schema.properties?.[propertyName]) {
|
|
53
|
+
return schema.properties[propertyName];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Search in oneOf schemas
|
|
57
|
+
if (schema.oneOf) {
|
|
58
|
+
for (const subschema of schema.oneOf) {
|
|
59
|
+
const found = findProperty(subschema as SchemaObject, propertyName);
|
|
60
|
+
if (found) return found;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Search in anyOf schemas
|
|
65
|
+
if (schema.anyOf) {
|
|
66
|
+
for (const subschema of schema.anyOf) {
|
|
67
|
+
const found = findProperty(subschema as SchemaObject, propertyName);
|
|
68
|
+
if (found) return found;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Search in allOf schemas
|
|
73
|
+
if (schema.allOf) {
|
|
74
|
+
for (const subschema of schema.allOf) {
|
|
75
|
+
const found = findProperty(subschema as SchemaObject, propertyName);
|
|
76
|
+
if (found) return found;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return undefined;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Recursively searches for a discriminator in a schema, including nested
|
|
85
|
+
* oneOf, anyOf, and allOf structures.
|
|
86
|
+
*/
|
|
87
|
+
const findDiscriminator = (schema: SchemaObject): any | undefined => {
|
|
88
|
+
if (schema.discriminator) {
|
|
89
|
+
return schema.discriminator;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (schema.oneOf) {
|
|
93
|
+
for (const subschema of schema.oneOf) {
|
|
94
|
+
const found = findDiscriminator(subschema as SchemaObject);
|
|
95
|
+
if (found) return found;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (schema.anyOf) {
|
|
100
|
+
for (const subschema of schema.anyOf) {
|
|
101
|
+
const found = findDiscriminator(subschema as SchemaObject);
|
|
102
|
+
if (found) return found;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (schema.allOf) {
|
|
107
|
+
for (const subschema of schema.allOf) {
|
|
108
|
+
const found = findDiscriminator(subschema as SchemaObject);
|
|
109
|
+
if (found) return found;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return undefined;
|
|
45
114
|
};
|
|
46
115
|
|
|
47
116
|
interface MarkdownProps {
|
|
@@ -140,6 +209,14 @@ const AnyOneOf: React.FC<SchemaProps> = ({
|
|
|
140
209
|
schemaPath,
|
|
141
210
|
}) => {
|
|
142
211
|
const key = schema.oneOf ? "oneOf" : "anyOf";
|
|
212
|
+
const schemaArray = schema[key];
|
|
213
|
+
|
|
214
|
+
// Empty oneOf/anyOf arrays are valid in OpenAPI specs but would cause the
|
|
215
|
+
// Tabs component to throw "requires at least one TabItem". Return null instead.
|
|
216
|
+
if (!schemaArray || !Array.isArray(schemaArray) || schemaArray.length === 0) {
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
|
|
143
220
|
const type = schema.oneOf
|
|
144
221
|
? translate({ id: OPENAPI_SCHEMA_ITEM.ONE_OF, message: "oneOf" })
|
|
145
222
|
: translate({ id: OPENAPI_SCHEMA_ITEM.ANY_OF, message: "anyOf" });
|
|
@@ -222,7 +299,6 @@ const AnyOneOf: React.FC<SchemaProps> = ({
|
|
|
222
299
|
collapsible={false}
|
|
223
300
|
name={undefined}
|
|
224
301
|
schemaName={computedSchemaName}
|
|
225
|
-
qualifierMessage={getQualifierMessage(anyOneSchema)}
|
|
226
302
|
schema={anyOneSchema}
|
|
227
303
|
discriminator={false}
|
|
228
304
|
children={null}
|
|
@@ -239,7 +315,6 @@ const AnyOneOf: React.FC<SchemaProps> = ({
|
|
|
239
315
|
collapsible={false}
|
|
240
316
|
name={undefined}
|
|
241
317
|
schemaName={computedSchemaName}
|
|
242
|
-
qualifierMessage={getQualifierMessage(anyOneSchema)}
|
|
243
318
|
schema={anyOneSchema}
|
|
244
319
|
discriminator={false}
|
|
245
320
|
children={null}
|
|
@@ -313,13 +388,17 @@ const Properties: React.FC<SchemaProps> = ({
|
|
|
313
388
|
discriminator["mapping"] = inferredMapping;
|
|
314
389
|
}
|
|
315
390
|
if (Object.keys(schema.properties as {}).length === 0) {
|
|
391
|
+
// Hide placeholder only for discriminator cleanup artifacts; preserve
|
|
392
|
+
// empty object rendering for schemas that intentionally define no properties.
|
|
393
|
+
if (discriminator) {
|
|
394
|
+
return null;
|
|
395
|
+
}
|
|
316
396
|
return (
|
|
317
397
|
<SchemaItem
|
|
318
398
|
collapsible={false}
|
|
319
399
|
name=""
|
|
320
400
|
required={false}
|
|
321
401
|
schemaName="object"
|
|
322
|
-
qualifierMessage={undefined}
|
|
323
402
|
schema={{}}
|
|
324
403
|
/>
|
|
325
404
|
);
|
|
@@ -442,10 +521,9 @@ const DiscriminatorNode: React.FC<DiscriminatorNodeProps> = ({
|
|
|
442
521
|
let discriminatedSchemas: any = {};
|
|
443
522
|
let inferredMapping: any = {};
|
|
444
523
|
|
|
445
|
-
//
|
|
446
|
-
const discriminatorProperty =
|
|
447
|
-
|
|
448
|
-
: {};
|
|
524
|
+
// Search for the discriminator property in the schema, including nested structures
|
|
525
|
+
const discriminatorProperty =
|
|
526
|
+
findProperty(schema, discriminator.propertyName) ?? {};
|
|
449
527
|
|
|
450
528
|
if (schema.allOf) {
|
|
451
529
|
const mergedSchemas = mergeAllOf(schema) as SchemaObject;
|
|
@@ -533,7 +611,6 @@ const AdditionalProperties: React.FC<SchemaProps> = ({
|
|
|
533
611
|
name="property name*"
|
|
534
612
|
required={false}
|
|
535
613
|
schemaName="any"
|
|
536
|
-
qualifierMessage={getQualifierMessage(schema)}
|
|
537
614
|
schema={schema}
|
|
538
615
|
collapsible={false}
|
|
539
616
|
discriminator={false}
|
|
@@ -579,7 +656,6 @@ const AdditionalProperties: React.FC<SchemaProps> = ({
|
|
|
579
656
|
name="property name*"
|
|
580
657
|
required={false}
|
|
581
658
|
schemaName={schemaName}
|
|
582
|
-
qualifierMessage={getQualifierMessage(schema)}
|
|
583
659
|
schema={additionalProperties}
|
|
584
660
|
collapsible={false}
|
|
585
661
|
discriminator={false}
|
|
@@ -689,7 +765,6 @@ const Items: React.FC<{
|
|
|
689
765
|
collapsible={false}
|
|
690
766
|
name="" // No name for array items
|
|
691
767
|
schemaName={getSchemaName(itemsSchema)}
|
|
692
|
-
qualifierMessage={getQualifierMessage(itemsSchema)}
|
|
693
768
|
schema={itemsSchema}
|
|
694
769
|
discriminator={false}
|
|
695
770
|
children={null}
|
|
@@ -849,7 +924,6 @@ const SchemaEdge: React.FC<SchemaEdgeProps> = ({
|
|
|
849
924
|
Array.isArray(required) ? required.includes(name) : required
|
|
850
925
|
}
|
|
851
926
|
schemaName={schema.allOf[0]}
|
|
852
|
-
qualifierMessage={undefined}
|
|
853
927
|
schema={schema.allOf[0]}
|
|
854
928
|
discriminator={false}
|
|
855
929
|
children={null}
|
|
@@ -921,7 +995,6 @@ const SchemaEdge: React.FC<SchemaEdgeProps> = ({
|
|
|
921
995
|
name={name}
|
|
922
996
|
required={Array.isArray(required) ? required.includes(name) : required}
|
|
923
997
|
schemaName={mergedSchemaName}
|
|
924
|
-
qualifierMessage={getQualifierMessage(mergedSchemas)}
|
|
925
998
|
schema={mergedSchemas}
|
|
926
999
|
discriminator={false}
|
|
927
1000
|
children={null}
|
|
@@ -935,7 +1008,6 @@ const SchemaEdge: React.FC<SchemaEdgeProps> = ({
|
|
|
935
1008
|
name={name}
|
|
936
1009
|
required={Array.isArray(required) ? required.includes(name) : required}
|
|
937
1010
|
schemaName={schemaName}
|
|
938
|
-
qualifierMessage={getQualifierMessage(schema)}
|
|
939
1011
|
schema={schema}
|
|
940
1012
|
discriminator={false}
|
|
941
1013
|
children={null}
|
|
@@ -997,12 +1069,24 @@ const SchemaNode: React.FC<SchemaProps> = ({
|
|
|
997
1069
|
return null;
|
|
998
1070
|
}
|
|
999
1071
|
|
|
1000
|
-
|
|
1001
|
-
|
|
1072
|
+
// Resolve discriminator recursively so nested oneOf/anyOf/allOf compositions
|
|
1073
|
+
// can still render discriminator tabs.
|
|
1074
|
+
let workingSchema = schema;
|
|
1075
|
+
const resolvedDiscriminator =
|
|
1076
|
+
schema.discriminator ?? findDiscriminator(schema);
|
|
1077
|
+
if (schema.allOf && !schema.discriminator && resolvedDiscriminator) {
|
|
1078
|
+
workingSchema = mergeAllOf(schema) as SchemaObject;
|
|
1079
|
+
}
|
|
1080
|
+
if (!workingSchema.discriminator && resolvedDiscriminator) {
|
|
1081
|
+
workingSchema.discriminator = resolvedDiscriminator;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
if (workingSchema.discriminator) {
|
|
1085
|
+
const { discriminator } = workingSchema;
|
|
1002
1086
|
return (
|
|
1003
1087
|
<DiscriminatorNode
|
|
1004
1088
|
discriminator={discriminator}
|
|
1005
|
-
schema={
|
|
1089
|
+
schema={workingSchema}
|
|
1006
1090
|
schemaType={schemaType}
|
|
1007
1091
|
/>
|
|
1008
1092
|
);
|
|
@@ -1127,7 +1211,6 @@ const SchemaNode: React.FC<SchemaProps> = ({
|
|
|
1127
1211
|
name={schema.type}
|
|
1128
1212
|
required={Boolean(schema.required)}
|
|
1129
1213
|
schemaName={schemaName}
|
|
1130
|
-
qualifierMessage={getQualifierMessage(schema)}
|
|
1131
1214
|
schema={schema}
|
|
1132
1215
|
discriminator={false}
|
|
1133
1216
|
children={null}
|
|
@@ -1140,7 +1223,9 @@ const SchemaNode: React.FC<SchemaProps> = ({
|
|
|
1140
1223
|
|
|
1141
1224
|
export default SchemaNode;
|
|
1142
1225
|
|
|
1143
|
-
type PrimitiveSchemaType =
|
|
1226
|
+
type PrimitiveSchemaType =
|
|
1227
|
+
| Exclude<NonNullable<SchemaObject["type"]>, "object" | "array">
|
|
1228
|
+
| "null";
|
|
1144
1229
|
|
|
1145
1230
|
const PRIMITIVE_TYPES: Record<PrimitiveSchemaType, true> = {
|
|
1146
1231
|
string: true,
|
|
@@ -13,6 +13,7 @@ import Markdown from "@theme/Markdown";
|
|
|
13
13
|
import { OPENAPI_SCHEMA_ITEM } from "@theme/translationIds";
|
|
14
14
|
import clsx from "clsx";
|
|
15
15
|
|
|
16
|
+
import { getQualifierMessage } from "../../markdown/schema";
|
|
16
17
|
import { guard } from "../../markdown/utils";
|
|
17
18
|
|
|
18
19
|
export interface Props {
|
|
@@ -130,7 +131,11 @@ export default function SchemaItem(props: Props) {
|
|
|
130
131
|
</>
|
|
131
132
|
));
|
|
132
133
|
|
|
133
|
-
|
|
134
|
+
// Generate qualifierMessage from schema if not provided
|
|
135
|
+
const effectiveQualifierMessage =
|
|
136
|
+
qualifierMessage ?? (schema ? getQualifierMessage(schema) : undefined);
|
|
137
|
+
|
|
138
|
+
const renderQualifierMessage = guard(effectiveQualifierMessage, (message) => (
|
|
134
139
|
<>
|
|
135
140
|
<Markdown>{message}</Markdown>
|
|
136
141
|
</>
|
|
@@ -16,11 +16,12 @@ import React, {
|
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
18
|
sanitizeTabsChildren,
|
|
19
|
+
type TabItemProps,
|
|
19
20
|
TabProps,
|
|
21
|
+
TabsProvider,
|
|
20
22
|
useScrollPositionBlocker,
|
|
21
|
-
|
|
23
|
+
useTabsContextValue,
|
|
22
24
|
} from "@docusaurus/theme-common/internal";
|
|
23
|
-
import { TabItemProps } from "@docusaurus/theme-common/lib/utils/tabsUtils";
|
|
24
25
|
import useIsBrowser from "@docusaurus/useIsBrowser";
|
|
25
26
|
import clsx from "clsx";
|
|
26
27
|
import flatten from "lodash/flatten";
|
|
@@ -40,7 +41,7 @@ function TabList({
|
|
|
40
41
|
selectValue,
|
|
41
42
|
tabValues,
|
|
42
43
|
onChange,
|
|
43
|
-
}: SchemaTabsProps & ReturnType<typeof
|
|
44
|
+
}: SchemaTabsProps & ReturnType<typeof useTabsContextValue>) {
|
|
44
45
|
const tabRefs: (HTMLLIElement | null)[] = [];
|
|
45
46
|
const { blockElementScrollPositionUntilNextRender } =
|
|
46
47
|
useScrollPositionBlocker();
|
|
@@ -188,7 +189,7 @@ function TabContent({
|
|
|
188
189
|
lazy,
|
|
189
190
|
children,
|
|
190
191
|
selectedValue,
|
|
191
|
-
}: SchemaTabsProps & ReturnType<typeof
|
|
192
|
+
}: SchemaTabsProps & ReturnType<typeof useTabsContextValue>) {
|
|
192
193
|
const childTabs = (Array.isArray(children) ? children : [children]).filter(
|
|
193
194
|
Boolean
|
|
194
195
|
) as ReactElement<TabItemProps>[];
|
|
@@ -203,28 +204,48 @@ function TabContent({
|
|
|
203
204
|
}
|
|
204
205
|
return cloneElement(selectedTabItem, { className: "margin-top--md" });
|
|
205
206
|
}
|
|
206
|
-
return
|
|
207
|
-
<div className="margin-top--md">
|
|
208
|
-
{childTabs.map((tabItem, i) =>
|
|
209
|
-
cloneElement(tabItem, {
|
|
210
|
-
key: i,
|
|
211
|
-
hidden: tabItem.props.value !== selectedValue,
|
|
212
|
-
})
|
|
213
|
-
)}
|
|
214
|
-
</div>
|
|
215
|
-
);
|
|
207
|
+
return <div className="margin-top--md">{childTabs}</div>;
|
|
216
208
|
}
|
|
217
209
|
function TabsComponent(props: SchemaTabsProps): React.JSX.Element {
|
|
218
|
-
const tabs =
|
|
210
|
+
const tabs = useTabsContextValue(props);
|
|
219
211
|
return (
|
|
220
|
-
<
|
|
221
|
-
<
|
|
222
|
-
|
|
223
|
-
|
|
212
|
+
<TabsProvider value={tabs}>
|
|
213
|
+
<div className="openapi-tabs__schema-container">
|
|
214
|
+
<TabList {...props} {...tabs} />
|
|
215
|
+
<TabContent {...props} {...tabs} />
|
|
216
|
+
</div>
|
|
217
|
+
</TabsProvider>
|
|
224
218
|
);
|
|
225
219
|
}
|
|
226
|
-
export default function SchemaTabs(
|
|
220
|
+
export default function SchemaTabs(
|
|
221
|
+
props: SchemaTabsProps
|
|
222
|
+
): React.JSX.Element | null {
|
|
227
223
|
const isBrowser = useIsBrowser();
|
|
224
|
+
|
|
225
|
+
const children = Array.isArray(props.children)
|
|
226
|
+
? props.children.filter(Boolean)
|
|
227
|
+
: props.children
|
|
228
|
+
? [props.children]
|
|
229
|
+
: [];
|
|
230
|
+
|
|
231
|
+
if (children.length === 0) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
let sanitizedChildren;
|
|
236
|
+
try {
|
|
237
|
+
sanitizedChildren = sanitizeTabsChildren(children);
|
|
238
|
+
} catch {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
if (
|
|
243
|
+
!sanitizedChildren ||
|
|
244
|
+
(Array.isArray(sanitizedChildren) && sanitizedChildren.length === 0)
|
|
245
|
+
) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
|
|
228
249
|
return (
|
|
229
250
|
<TabsComponent
|
|
230
251
|
// Remount tabs after hydration
|
|
@@ -232,7 +253,7 @@ export default function SchemaTabs(props: SchemaTabsProps): React.JSX.Element {
|
|
|
232
253
|
key={String(isBrowser)}
|
|
233
254
|
{...props}
|
|
234
255
|
>
|
|
235
|
-
{
|
|
256
|
+
{sanitizedChildren}
|
|
236
257
|
</TabsComponent>
|
|
237
258
|
);
|
|
238
259
|
}
|
|
@@ -15,7 +15,7 @@ import ResponseHeaders from "@theme/ResponseHeaders";
|
|
|
15
15
|
import ResponseSchema from "@theme/ResponseSchema";
|
|
16
16
|
import TabItem from "@theme/TabItem";
|
|
17
17
|
import { OPENAPI_STATUS_CODES } from "@theme/translationIds";
|
|
18
|
-
import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types";
|
|
18
|
+
import type { ApiItem } from "docusaurus-plugin-openapi-docs/src/types";
|
|
19
19
|
|
|
20
20
|
interface Props {
|
|
21
21
|
id?: string;
|
package/src/theme/styles.scss
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
@use "./ApiExplorer/FloatingButton/FloatingButton";
|
|
10
10
|
@use "./ApiExplorer/FormFileUpload/FormFileUpload";
|
|
11
11
|
@use "./ApiExplorer/FormItem/FormItem";
|
|
12
|
+
@use "./ApiExplorer/FormLabel/FormLabel";
|
|
12
13
|
@use "./ApiExplorer/FormMultiSelect/FormMultiSelect";
|
|
13
14
|
@use "./ApiExplorer/FormSelect/FormSelect";
|
|
14
15
|
@use "./ApiExplorer/FormTextInput/FormTextInput";
|
|
@@ -79,6 +79,8 @@ export const OPENAPI_SCHEMA = {
|
|
|
79
79
|
};
|
|
80
80
|
|
|
81
81
|
export const OPENAPI_SCHEMA_ITEM = {
|
|
82
|
+
CHARACTERS: "theme.openapi.schemaItem.characters",
|
|
83
|
+
NON_EMPTY: "theme.openapi.schemaItem.nonEmpty",
|
|
82
84
|
REQUIRED: "theme.openapi.schemaItem.required",
|
|
83
85
|
DEPRECATED: "theme.openapi.schemaItem.deprecated",
|
|
84
86
|
NULLABLE: "theme.openapi.schemaItem.nullable",
|
|
@@ -90,6 +92,7 @@ export const OPENAPI_SCHEMA_ITEM = {
|
|
|
90
92
|
ENUM_VALUE: "theme.openapi.schemaItem.enumValue",
|
|
91
93
|
ENUM_DESCRIPTION: "theme.openapi.schemaItem.enumDescription",
|
|
92
94
|
POSSIBLE_VALUES: "theme.openapi.schemaItem.possibleValues",
|
|
95
|
+
EXPRESSION: "theme.openapi.schemaItem.expression",
|
|
93
96
|
ONE_OF: "theme.openapi.schemaItem.oneOf",
|
|
94
97
|
ANY_OF: "theme.openapi.schemaItem.anyOf",
|
|
95
98
|
};
|
package/src/theme-classic.d.ts
CHANGED
|
@@ -21,6 +21,15 @@ declare module "@docusaurus/theme-common/internal" {
|
|
|
21
21
|
import { Props as ILineProps } from "@theme/CodeBlock/Line";
|
|
22
22
|
import { PrismTheme } from "prism-react-renderer";
|
|
23
23
|
|
|
24
|
+
export interface TabItemProps {
|
|
25
|
+
readonly children: ReactNode;
|
|
26
|
+
readonly value: string;
|
|
27
|
+
readonly default?: boolean;
|
|
28
|
+
readonly label?: string;
|
|
29
|
+
readonly className?: string;
|
|
30
|
+
readonly attributes?: { [key: string]: unknown };
|
|
31
|
+
}
|
|
32
|
+
|
|
24
33
|
export interface TabProps extends ITabsProps {
|
|
25
34
|
length?: number;
|
|
26
35
|
}
|
|
@@ -53,12 +62,27 @@ declare module "@docusaurus/theme-common/internal" {
|
|
|
53
62
|
content: PropDocContent;
|
|
54
63
|
});
|
|
55
64
|
|
|
56
|
-
export function
|
|
65
|
+
export function useTabsContextValue(props: TabProps): {
|
|
57
66
|
selectedValue: string;
|
|
58
67
|
selectValue: (value: string) => void;
|
|
59
68
|
tabValues: readonly TabValue[];
|
|
69
|
+
lazy: boolean;
|
|
70
|
+
block: boolean;
|
|
60
71
|
};
|
|
61
72
|
|
|
73
|
+
export function useTabs(): {
|
|
74
|
+
selectedValue: string;
|
|
75
|
+
selectValue: (value: string) => void;
|
|
76
|
+
tabValues: readonly TabValue[];
|
|
77
|
+
lazy: boolean;
|
|
78
|
+
block: boolean;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export function TabsProvider(props: {
|
|
82
|
+
children: ReactNode;
|
|
83
|
+
value: ReturnType<typeof useTabsContextValue>;
|
|
84
|
+
}): ReactNode;
|
|
85
|
+
|
|
62
86
|
export function parseLines(
|
|
63
87
|
content: string,
|
|
64
88
|
options: {
|
package/src/types.d.ts
CHANGED
|
@@ -6,7 +6,14 @@
|
|
|
6
6
|
* ========================================================================== */
|
|
7
7
|
|
|
8
8
|
import type { DocFrontMatter as DocusaurusDocFrontMatter } from "@docusaurus/plugin-content-docs";
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
// Re-export types from plugin for consistency
|
|
11
|
+
export type {
|
|
12
|
+
DiscriminatorObject,
|
|
13
|
+
ExternalDocumentationObject,
|
|
14
|
+
SchemaObject,
|
|
15
|
+
XMLObject,
|
|
16
|
+
} from "docusaurus-plugin-openapi-docs/src/openapi/types";
|
|
10
17
|
|
|
11
18
|
export interface ThemeConfig {
|
|
12
19
|
api?: {
|
|
@@ -20,60 +27,16 @@ export interface ThemeConfig {
|
|
|
20
27
|
authPersistence?: false | "sessionStorage" | "localStorage";
|
|
21
28
|
/** Request timeout in milliseconds. Defaults to 30000 (30 seconds). */
|
|
22
29
|
requestTimeout?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Controls whether cookies and credentials are sent with API requests.
|
|
32
|
+
* - `"omit"`: Never send cookies (useful when docs are on same domain as app)
|
|
33
|
+
* - `"same-origin"`: Send cookies for same-origin requests (default browser behavior)
|
|
34
|
+
* - `"include"`: Always send cookies, even for cross-origin requests
|
|
35
|
+
*/
|
|
36
|
+
requestCredentials?: "omit" | "same-origin" | "include";
|
|
23
37
|
};
|
|
24
38
|
}
|
|
25
39
|
|
|
26
|
-
export type JSONSchema = JSONSchema4 | JSONSchema6 | JSONSchema7;
|
|
27
|
-
export type SchemaObject = Omit<
|
|
28
|
-
JSONSchema,
|
|
29
|
-
| "type"
|
|
30
|
-
| "allOf"
|
|
31
|
-
| "oneOf"
|
|
32
|
-
| "anyOf"
|
|
33
|
-
| "not"
|
|
34
|
-
| "items"
|
|
35
|
-
| "properties"
|
|
36
|
-
| "additionalProperties"
|
|
37
|
-
> & {
|
|
38
|
-
// OpenAPI specific overrides
|
|
39
|
-
type?: "string" | "number" | "integer" | "boolean" | "object" | "array";
|
|
40
|
-
allOf?: SchemaObject[];
|
|
41
|
-
oneOf?: SchemaObject[];
|
|
42
|
-
anyOf?: SchemaObject[];
|
|
43
|
-
not?: SchemaObject;
|
|
44
|
-
items?: SchemaObject;
|
|
45
|
-
properties?: Record<string, SchemaObject>;
|
|
46
|
-
additionalProperties?: boolean | SchemaObject;
|
|
47
|
-
|
|
48
|
-
// OpenAPI additions
|
|
49
|
-
nullable?: boolean;
|
|
50
|
-
discriminator?: DiscriminatorObject;
|
|
51
|
-
readOnly?: boolean;
|
|
52
|
-
writeOnly?: boolean;
|
|
53
|
-
xml?: XMLObject;
|
|
54
|
-
externalDocs?: ExternalDocumentationObject;
|
|
55
|
-
example?: any;
|
|
56
|
-
deprecated?: boolean;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export interface DiscriminatorObject {
|
|
60
|
-
propertyName: string;
|
|
61
|
-
mapping?: Record<string, string>;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export interface XMLObject {
|
|
65
|
-
name?: string;
|
|
66
|
-
namespace?: string;
|
|
67
|
-
prefix?: string;
|
|
68
|
-
attribute?: boolean;
|
|
69
|
-
wrapped?: boolean;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export interface ExternalDocumentationObject {
|
|
73
|
-
description?: string;
|
|
74
|
-
url: string;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
40
|
export interface DocFrontMatter extends DocusaurusDocFrontMatter {
|
|
78
41
|
/** Provides OpenAPI Docs with a reference path to their respective Info Doc */
|
|
79
42
|
info_path?: string;
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/index.ts","./src/plugin-content-docs.d.ts","./src/postman-code-generators.d.ts","./src/react-magic-dropzone.d.ts","./src/theme-classic.d.ts","./src/theme-openapi.d.ts","./src/types.d.ts","./src/markdown/createDescription.ts","./src/markdown/schema.ts","./src/markdown/utils.test.ts","./src/markdown/utils.ts","./src/theme/translationIds.ts","./src/theme/ApiExplorer/buildPostmanRequest.ts","./src/theme/ApiExplorer/index.tsx","./src/theme/ApiExplorer/persistenceMiddleware.ts","./src/theme/ApiExplorer/storage-utils.ts","./src/theme/ApiExplorer/Accept/index.tsx","./src/theme/ApiExplorer/Accept/slice.ts","./src/theme/ApiExplorer/ApiCodeBlock/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Container/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Content/Element.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Content/String.tsx","./src/theme/ApiExplorer/ApiCodeBlock/CopyButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/ExitButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Line/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/index.tsx","./src/theme/ApiExplorer/Authorization/auth-types.ts","./src/theme/ApiExplorer/Authorization/index.tsx","./src/theme/ApiExplorer/Authorization/slice.ts","./src/theme/ApiExplorer/Body/index.tsx","./src/theme/ApiExplorer/Body/json2xml.d.ts","./src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts","./src/theme/ApiExplorer/Body/slice.ts","./src/theme/ApiExplorer/Body/FileArrayFormBodyItem/index.tsx","./src/theme/ApiExplorer/Body/FormBodyItem/index.tsx","./src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts","./src/theme/ApiExplorer/CodeSnippets/index.tsx","./src/theme/ApiExplorer/CodeSnippets/languages.ts","./src/theme/ApiExplorer/CodeTabs/index.tsx","./src/theme/ApiExplorer/ContentType/index.tsx","./src/theme/ApiExplorer/ContentType/slice.ts","./src/theme/ApiExplorer/Export/index.tsx","./src/theme/ApiExplorer/FloatingButton/index.tsx","./src/theme/ApiExplorer/FormFileUpload/index.tsx","./src/theme/ApiExplorer/FormItem/index.tsx","./src/theme/ApiExplorer/FormMultiSelect/index.tsx","./src/theme/ApiExplorer/FormSelect/index.tsx","./src/theme/ApiExplorer/FormTextInput/index.tsx","./src/theme/ApiExplorer/LiveEditor/index.tsx","./src/theme/ApiExplorer/MethodEndpoint/index.tsx","./src/theme/ApiExplorer/ParamOptions/index.tsx","./src/theme/ApiExplorer/ParamOptions/slice.ts","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx","./src/theme/ApiExplorer/Request/index.tsx","./src/theme/ApiExplorer/Request/makeRequest.ts","./src/theme/ApiExplorer/Response/index.tsx","./src/theme/ApiExplorer/Response/slice.ts","./src/theme/ApiExplorer/SchemaSelection/index.ts","./src/theme/ApiExplorer/SchemaSelection/slice.ts","./src/theme/ApiExplorer/SecuritySchemes/index.tsx","./src/theme/ApiExplorer/Server/index.tsx","./src/theme/ApiExplorer/Server/slice.ts","./src/theme/ApiItem/hooks.ts","./src/theme/ApiItem/index.tsx","./src/theme/ApiItem/store.ts","./src/theme/ApiItem/Layout/index.tsx","./src/theme/ApiLogo/index.tsx","./src/theme/ApiTabs/index.tsx","./src/theme/ArrayBrackets/index.tsx","./src/theme/CodeSamples/index.tsx","./src/theme/DiscriminatorTabs/index.tsx","./src/theme/Example/index.tsx","./src/theme/Markdown/index.d.ts","./src/theme/MimeTabs/index.tsx","./src/theme/OperationTabs/index.tsx","./src/theme/ParamsDetails/index.tsx","./src/theme/ParamsItem/index.tsx","./src/theme/RequestSchema/index.tsx","./src/theme/ResponseExamples/index.tsx","./src/theme/ResponseHeaders/index.tsx","./src/theme/ResponseSchema/index.tsx","./src/theme/Schema/index.tsx","./src/theme/SchemaItem/index.tsx","./src/theme/SchemaTabs/index.tsx","./src/theme/SkeletonLoader/index.tsx","./src/theme/StatusCodes/index.tsx"],"version":"5.9.3"}
|
|
1
|
+
{"root":["./src/index.ts","./src/plugin-content-docs.d.ts","./src/postman-code-generators.d.ts","./src/react-magic-dropzone.d.ts","./src/theme-classic.d.ts","./src/theme-openapi.d.ts","./src/types.d.ts","./src/markdown/createDescription.ts","./src/markdown/schema.ts","./src/markdown/utils.test.ts","./src/markdown/utils.ts","./src/theme/translationIds.ts","./src/theme/ApiExplorer/buildPostmanRequest.ts","./src/theme/ApiExplorer/index.tsx","./src/theme/ApiExplorer/persistenceMiddleware.ts","./src/theme/ApiExplorer/storage-utils.ts","./src/theme/ApiExplorer/Accept/index.tsx","./src/theme/ApiExplorer/Accept/slice.ts","./src/theme/ApiExplorer/ApiCodeBlock/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Container/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Content/Element.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Content/String.tsx","./src/theme/ApiExplorer/ApiCodeBlock/CopyButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/ExitButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Line/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/index.tsx","./src/theme/ApiExplorer/Authorization/auth-types.ts","./src/theme/ApiExplorer/Authorization/index.tsx","./src/theme/ApiExplorer/Authorization/slice.ts","./src/theme/ApiExplorer/Body/index.tsx","./src/theme/ApiExplorer/Body/json2xml.d.ts","./src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts","./src/theme/ApiExplorer/Body/slice.ts","./src/theme/ApiExplorer/Body/FileArrayFormBodyItem/index.tsx","./src/theme/ApiExplorer/Body/FormBodyItem/index.tsx","./src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts","./src/theme/ApiExplorer/CodeSnippets/index.tsx","./src/theme/ApiExplorer/CodeSnippets/languages.ts","./src/theme/ApiExplorer/CodeTabs/index.tsx","./src/theme/ApiExplorer/ContentType/index.tsx","./src/theme/ApiExplorer/ContentType/slice.ts","./src/theme/ApiExplorer/EncodingSelection/slice.ts","./src/theme/ApiExplorer/EncodingSelection/useResolvedEncoding.ts","./src/theme/ApiExplorer/Export/index.tsx","./src/theme/ApiExplorer/FloatingButton/index.tsx","./src/theme/ApiExplorer/FormFileUpload/index.tsx","./src/theme/ApiExplorer/FormItem/index.tsx","./src/theme/ApiExplorer/FormLabel/index.tsx","./src/theme/ApiExplorer/FormMultiSelect/index.tsx","./src/theme/ApiExplorer/FormSelect/index.tsx","./src/theme/ApiExplorer/FormTextInput/index.tsx","./src/theme/ApiExplorer/LiveEditor/index.tsx","./src/theme/ApiExplorer/MethodEndpoint/index.tsx","./src/theme/ApiExplorer/ParamOptions/index.tsx","./src/theme/ApiExplorer/ParamOptions/slice.ts","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx","./src/theme/ApiExplorer/Request/index.tsx","./src/theme/ApiExplorer/Request/makeRequest.ts","./src/theme/ApiExplorer/Response/index.tsx","./src/theme/ApiExplorer/Response/slice.ts","./src/theme/ApiExplorer/SchemaSelection/index.ts","./src/theme/ApiExplorer/SchemaSelection/slice.ts","./src/theme/ApiExplorer/SecuritySchemes/index.tsx","./src/theme/ApiExplorer/Server/index.tsx","./src/theme/ApiExplorer/Server/slice.ts","./src/theme/ApiItem/hooks.ts","./src/theme/ApiItem/index.tsx","./src/theme/ApiItem/store.ts","./src/theme/ApiItem/Layout/index.tsx","./src/theme/ApiLogo/index.tsx","./src/theme/ApiTabs/index.tsx","./src/theme/ArrayBrackets/index.tsx","./src/theme/CodeSamples/index.tsx","./src/theme/DiscriminatorTabs/index.tsx","./src/theme/Example/index.tsx","./src/theme/Markdown/index.d.ts","./src/theme/MimeTabs/index.tsx","./src/theme/OperationTabs/index.tsx","./src/theme/ParamsDetails/index.tsx","./src/theme/ParamsItem/index.tsx","./src/theme/RequestSchema/index.tsx","./src/theme/ResponseExamples/index.tsx","./src/theme/ResponseHeaders/index.tsx","./src/theme/ResponseSchema/index.tsx","./src/theme/Schema/index.tsx","./src/theme/SchemaItem/index.tsx","./src/theme/SchemaTabs/index.tsx","./src/theme/SkeletonLoader/index.tsx","./src/theme/StatusCodes/index.tsx"],"version":"5.9.3"}
|