docusaurus-plugin-openapi-docs 0.0.0-411 → 0.0.0-414

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/README.md CHANGED
@@ -246,7 +246,7 @@ yarn docusaurus gen-api-docs:version petstore:all
246
246
  Run the following to bootstrap a Docsaurus v2 site (classic theme) with `docusaurus-openapi-docs`:
247
247
 
248
248
  ```bash
249
- npx create-docusaurus@2.0.0-rc.1 my-website --package-manager yarn
249
+ npx create-docusaurus@2.0.1 my-website --package-manager yarn
250
250
  ```
251
251
 
252
252
  > When prompted to select a template choose `Git repository`.
@@ -264,7 +264,7 @@ function createDiscriminator(schema) {
264
264
  propertyDescription = schema.properties[propertyName].description;
265
265
  }
266
266
  }
267
- return (0, utils_1.create)("li", {
267
+ return (0, utils_1.create)("div", {
268
268
  className: "discriminatorItem",
269
269
  children: (0, utils_1.create)("div", {
270
270
  children: [
@@ -372,7 +372,7 @@ function createPropertyDiscriminator(name, schemaName, schema, discriminator, re
372
372
  if (discriminator.mapping === undefined) {
373
373
  return undefined;
374
374
  }
375
- return (0, utils_1.create)("li", {
375
+ return (0, utils_1.create)("div", {
376
376
  className: "discriminatorItem",
377
377
  children: (0, utils_1.create)("div", {
378
378
  children: [
@@ -53,6 +53,21 @@ function createResponseHeaders(responseHeaders) {
53
53
  ],
54
54
  }));
55
55
  }
56
+ function createResponseExamples(responseExamples) {
57
+ return Object.entries(responseExamples).map(([exampleName, exampleValue]) => {
58
+ const camelToSpaceName = exampleName.replace(/([A-Z])/g, " $1");
59
+ let finalFormattedName = camelToSpaceName.charAt(0).toUpperCase() + camelToSpaceName.slice(1);
60
+ return (0, utils_1.create)("TabItem", {
61
+ label: `${finalFormattedName}`,
62
+ value: `${finalFormattedName}`,
63
+ children: [
64
+ (0, utils_1.create)("ResponseSamples", {
65
+ responseExample: JSON.stringify(exampleValue.value, null, 2),
66
+ }),
67
+ ],
68
+ });
69
+ });
70
+ }
56
71
  function createStatusCodes({ responses }) {
57
72
  if (responses === undefined) {
58
73
  return undefined;
@@ -66,6 +81,9 @@ function createStatusCodes({ responses }) {
66
81
  (0, utils_1.create)("ApiTabs", {
67
82
  children: codes.map((code) => {
68
83
  const responseHeaders = responses[code].headers;
84
+ const responseContent = responses[code].content;
85
+ const responseContentKey = responseContent && Object.keys(responseContent)[0];
86
+ const responseExamples = responseContentKey && responseContent[responseContentKey].examples;
69
87
  return (0, utils_1.create)("TabItem", {
70
88
  label: code,
71
89
  value: code,
@@ -73,28 +91,62 @@ function createStatusCodes({ responses }) {
73
91
  (0, utils_1.create)("div", {
74
92
  children: (0, createDescription_1.createDescription)(responses[code].description),
75
93
  }),
76
- responseHeaders &&
77
- (0, createDetails_1.createDetails)({
78
- "data-collaposed": false,
79
- open: true,
80
- style: { textAlign: "left" },
81
- children: [
82
- (0, createDetailsSummary_1.createDetailsSummary)({
83
- children: [
84
- (0, utils_1.create)("strong", { children: "Response Headers" }),
85
- ],
86
- }),
87
- createResponseHeaders(responseHeaders),
88
- ],
89
- }),
90
- (0, utils_1.create)("div", {
94
+ (0, utils_2.guard)(responseExamples, () => (0, utils_1.create)("SchemaTabs", {
95
+ children: [
96
+ (0, utils_1.create)("TabTtem", {
97
+ label: "Schema",
98
+ value: "Schema",
99
+ children: [
100
+ responseHeaders &&
101
+ (0, createDetails_1.createDetails)({
102
+ "data-collaposed": false,
103
+ open: true,
104
+ style: { textAlign: "left" },
105
+ children: [
106
+ (0, createDetailsSummary_1.createDetailsSummary)({
107
+ children: [
108
+ (0, utils_1.create)("strong", {
109
+ children: "Response Headers",
110
+ }),
111
+ ],
112
+ }),
113
+ createResponseHeaders(responseHeaders),
114
+ ],
115
+ }),
116
+ (0, utils_1.create)("div", {
117
+ children: (0, createSchemaDetails_1.createSchemaDetails)({
118
+ title: "Schema",
119
+ body: {
120
+ content: responses[code].content,
121
+ },
122
+ }),
123
+ }),
124
+ ],
125
+ }),
126
+ createResponseExamples(responseExamples),
127
+ ],
128
+ })),
129
+ (0, utils_2.guard)(responseHeaders, () => (0, createDetails_1.createDetails)({
130
+ "data-collaposed": false,
131
+ open: true,
132
+ style: { textAlign: "left" },
133
+ children: [
134
+ (0, createDetailsSummary_1.createDetailsSummary)({
135
+ children: [
136
+ (0, utils_1.create)("strong", { children: "Response Headers" }),
137
+ ],
138
+ }),
139
+ createResponseHeaders(responseHeaders),
140
+ ],
141
+ })),
142
+ (0, utils_2.guard)(!responseExamples, () => (0, utils_1.create)("div", {
91
143
  children: (0, createSchemaDetails_1.createSchemaDetails)({
92
144
  title: "Schema",
93
145
  body: {
94
146
  content: responses[code].content,
95
147
  },
96
148
  }),
97
- }),
149
+ })),
98
150
  ],
99
151
  });
100
152
  }),
@@ -22,9 +22,10 @@ const createVersionBadge_1 = require("./createVersionBadge");
22
22
  const utils_1 = require("./utils");
23
23
  function createApiPageMD({ title, api: { deprecated, "x-deprecated-description": deprecatedDescription, description, parameters, requestBody, responses, }, }) {
24
24
  return (0, utils_1.render)([
25
+ `import ApiTabs from "@theme/ApiTabs";\n`,
25
26
  `import ParamsItem from "@theme/ParamsItem";\n`,
27
+ `import ResponseSamples from "@theme/ResponseSamples";\n`,
26
28
  `import SchemaItem from "@theme/SchemaItem"\n`,
27
- `import ApiTabs from "@theme/ApiTabs";\n`,
28
29
  `import SchemaTabs from "@theme/SchemaTabs";\n`,
29
30
  `import DiscriminatorTabs from "@theme/DiscriminatorTabs";\n`,
30
31
  `import TabItem from "@theme/TabItem";\n\n`,
@@ -54,11 +54,18 @@ function getQualifierMessage(schema) {
54
54
  if (!schema) {
55
55
  return undefined;
56
56
  }
57
- if (schema.items) {
57
+ if (schema.items &&
58
+ schema.minItems === undefined &&
59
+ schema.maxItems === undefined) {
58
60
  return getQualifierMessage(schema.items);
59
61
  }
60
62
  let message = "**Possible values:** ";
61
63
  let qualifierGroups = [];
64
+ if (schema.items && schema.items.enum) {
65
+ if (schema.items.enum) {
66
+ qualifierGroups.push(`[${schema.items.enum.map((e) => `\`${e}\``).join(", ")}]`);
67
+ }
68
+ }
62
69
  if (schema.minLength || schema.maxLength) {
63
70
  let lengthQualifier = "";
64
71
  let minLength;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "docusaurus-plugin-openapi-docs",
3
3
  "description": "OpenAPI plugin for Docusaurus.",
4
- "version": "0.0.0-411",
4
+ "version": "0.0.0-414",
5
5
  "license": "MIT",
6
6
  "keywords": [
7
7
  "openapi",
@@ -28,8 +28,8 @@
28
28
  "watch": "tsc --watch"
29
29
  },
30
30
  "devDependencies": {
31
- "@docusaurus/module-type-aliases": "2.0.0-rc.1",
32
- "@docusaurus/types": "2.0.0-rc.1",
31
+ "@docusaurus/module-type-aliases": "2.0.1",
32
+ "@docusaurus/types": "2.0.1",
33
33
  "@types/fs-extra": "^9.0.13",
34
34
  "@types/js-yaml": "^4.0.5",
35
35
  "@types/json-pointer": "^1.0.31",
@@ -40,10 +40,10 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@apidevtools/json-schema-ref-parser": "^9.0.9",
43
- "@docusaurus/mdx-loader": "2.0.0-rc.1",
44
- "@docusaurus/plugin-content-docs": "2.0.0-rc.1",
45
- "@docusaurus/utils": "2.0.0-rc.1",
46
- "@docusaurus/utils-validation": "2.0.0-rc.1",
43
+ "@docusaurus/mdx-loader": "2.0.1",
44
+ "@docusaurus/plugin-content-docs": "2.0.1",
45
+ "@docusaurus/utils": "2.0.1",
46
+ "@docusaurus/utils-validation": "2.0.1",
47
47
  "@paloaltonetworks/openapi-to-postmanv2": "3.1.0-hotfix.1",
48
48
  "@paloaltonetworks/postman-collection": "^4.1.0",
49
49
  "@redocly/openapi-core": "^1.0.0-beta.103",
@@ -67,5 +67,5 @@
67
67
  "engines": {
68
68
  "node": ">=14"
69
69
  },
70
- "gitHead": "f3967eda19d631760dc9e7f9e5a358897964f0a7"
70
+ "gitHead": "8fdb1f50296e3026908f23bae76981102753b649"
71
71
  }
@@ -320,7 +320,7 @@ function createDiscriminator(schema: SchemaObject) {
320
320
  }
321
321
  }
322
322
 
323
- return create("li", {
323
+ return create("div", {
324
324
  className: "discriminatorItem",
325
325
  children: create("div", {
326
326
  children: [
@@ -456,7 +456,7 @@ function createPropertyDiscriminator(
456
456
  return undefined;
457
457
  }
458
458
 
459
- return create("li", {
459
+ return create("div", {
460
460
  className: "discriminatorItem",
461
461
  children: create("div", {
462
462
  children: [
@@ -67,6 +67,26 @@ function createResponseHeaders(responseHeaders: any) {
67
67
  );
68
68
  }
69
69
 
70
+ function createResponseExamples(responseExamples: any) {
71
+ return Object.entries(responseExamples).map(
72
+ ([exampleName, exampleValue]: any) => {
73
+ const camelToSpaceName = exampleName.replace(/([A-Z])/g, " $1");
74
+ let finalFormattedName =
75
+ camelToSpaceName.charAt(0).toUpperCase() + camelToSpaceName.slice(1);
76
+
77
+ return create("TabItem", {
78
+ label: `${finalFormattedName}`,
79
+ value: `${finalFormattedName}`,
80
+ children: [
81
+ create("ResponseSamples", {
82
+ responseExample: JSON.stringify(exampleValue.value, null, 2),
83
+ }),
84
+ ],
85
+ });
86
+ }
87
+ );
88
+ }
89
+
70
90
  export function createStatusCodes({ responses }: Props) {
71
91
  if (responses === undefined) {
72
92
  return undefined;
@@ -82,6 +102,12 @@ export function createStatusCodes({ responses }: Props) {
82
102
  create("ApiTabs", {
83
103
  children: codes.map((code) => {
84
104
  const responseHeaders: any = responses[code].headers;
105
+ const responseContent: any = responses[code].content;
106
+ const responseContentKey: any =
107
+ responseContent && Object.keys(responseContent)[0];
108
+ const responseExamples: any =
109
+ responseContentKey && responseContent[responseContentKey].examples;
110
+
85
111
  return create("TabItem", {
86
112
  label: code,
87
113
  value: code,
@@ -89,7 +115,44 @@ export function createStatusCodes({ responses }: Props) {
89
115
  create("div", {
90
116
  children: createDescription(responses[code].description),
91
117
  }),
92
- responseHeaders &&
118
+ guard(responseExamples, () =>
119
+ create("SchemaTabs", {
120
+ children: [
121
+ create("TabTtem", {
122
+ label: "Schema",
123
+ value: "Schema",
124
+ children: [
125
+ responseHeaders &&
126
+ createDetails({
127
+ "data-collaposed": false,
128
+ open: true,
129
+ style: { textAlign: "left" },
130
+ children: [
131
+ createDetailsSummary({
132
+ children: [
133
+ create("strong", {
134
+ children: "Response Headers",
135
+ }),
136
+ ],
137
+ }),
138
+ createResponseHeaders(responseHeaders),
139
+ ],
140
+ }),
141
+ create("div", {
142
+ children: createSchemaDetails({
143
+ title: "Schema",
144
+ body: {
145
+ content: responses[code].content,
146
+ },
147
+ }),
148
+ }),
149
+ ],
150
+ }),
151
+ createResponseExamples(responseExamples),
152
+ ],
153
+ })
154
+ ),
155
+ guard(responseHeaders, () =>
93
156
  createDetails({
94
157
  "data-collaposed": false,
95
158
  open: true,
@@ -102,15 +165,18 @@ export function createStatusCodes({ responses }: Props) {
102
165
  }),
103
166
  createResponseHeaders(responseHeaders),
104
167
  ],
105
- }),
106
- create("div", {
107
- children: createSchemaDetails({
108
- title: "Schema",
109
- body: {
110
- content: responses[code].content,
111
- },
112
- }),
113
- }),
168
+ })
169
+ ),
170
+ guard(!responseExamples, () =>
171
+ create("div", {
172
+ children: createSchemaDetails({
173
+ title: "Schema",
174
+ body: {
175
+ content: responses[code].content,
176
+ },
177
+ }),
178
+ })
179
+ ),
114
180
  ],
115
181
  });
116
182
  }),
@@ -38,9 +38,10 @@ export function createApiPageMD({
38
38
  },
39
39
  }: ApiPageMetadata) {
40
40
  return render([
41
+ `import ApiTabs from "@theme/ApiTabs";\n`,
41
42
  `import ParamsItem from "@theme/ParamsItem";\n`,
43
+ `import ResponseSamples from "@theme/ResponseSamples";\n`,
42
44
  `import SchemaItem from "@theme/SchemaItem"\n`,
43
- `import ApiTabs from "@theme/ApiTabs";\n`,
44
45
  `import SchemaTabs from "@theme/SchemaTabs";\n`,
45
46
  `import DiscriminatorTabs from "@theme/DiscriminatorTabs";\n`,
46
47
  `import TabItem from "@theme/TabItem";\n\n`,
@@ -64,7 +64,11 @@ export function getQualifierMessage(schema?: SchemaObject): string | undefined {
64
64
  return undefined;
65
65
  }
66
66
 
67
- if (schema.items) {
67
+ if (
68
+ schema.items &&
69
+ schema.minItems === undefined &&
70
+ schema.maxItems === undefined
71
+ ) {
68
72
  return getQualifierMessage(schema.items);
69
73
  }
70
74
 
@@ -72,6 +76,14 @@ export function getQualifierMessage(schema?: SchemaObject): string | undefined {
72
76
 
73
77
  let qualifierGroups = [];
74
78
 
79
+ if (schema.items && schema.items.enum) {
80
+ if (schema.items.enum) {
81
+ qualifierGroups.push(
82
+ `[${schema.items.enum.map((e) => `\`${e}\``).join(", ")}]`
83
+ );
84
+ }
85
+ }
86
+
75
87
  if (schema.minLength || schema.maxLength) {
76
88
  let lengthQualifier = "";
77
89
  let minLength;