docusaurus-plugin-openapi-docs 0.0.0-349 → 0.0.0-352

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/lib/index.js +32 -7
  2. package/lib/markdown/createContactInfo.d.ts +2 -0
  3. package/lib/markdown/createContactInfo.js +49 -0
  4. package/lib/markdown/createLicense.d.ts +2 -0
  5. package/lib/markdown/createLicense.js +33 -0
  6. package/lib/markdown/createTermsOfService.d.ts +1 -0
  7. package/lib/markdown/createTermsOfService.js +32 -0
  8. package/lib/markdown/index.d.ts +1 -1
  9. package/lib/markdown/index.js +7 -1
  10. package/lib/openapi/openapi.d.ts +4 -3
  11. package/lib/openapi/openapi.js +35 -19
  12. package/lib/openapi/types.d.ts +4 -1
  13. package/lib/sidebars/index.d.ts +2 -1
  14. package/lib/sidebars/index.js +63 -19
  15. package/lib/types.d.ts +2 -0
  16. package/package.json +8 -8
  17. package/src/index.ts +44 -8
  18. package/src/markdown/createContactInfo.ts +48 -0
  19. package/src/markdown/createLicense.ts +32 -0
  20. package/src/markdown/createTermsOfService.ts +30 -0
  21. package/src/markdown/index.ts +8 -1
  22. package/src/openapi/openapi.ts +29 -12
  23. package/src/openapi/types.ts +4 -1
  24. package/src/sidebars/index.ts +80 -20
  25. package/src/types.ts +2 -0
  26. package/lib/markdown/createFullWidthTable.d.ts +0 -2
  27. package/lib/markdown/createFullWidthTable.js +0 -18
  28. package/lib/markdown/createParamsTable.d.ts +0 -7
  29. package/lib/markdown/createParamsTable.js +0 -80
  30. package/lib/markdown/createRequestBodyTable.d.ts +0 -6
  31. package/lib/markdown/createRequestBodyTable.js +0 -14
  32. package/lib/markdown/createSchemaTable.d.ts +0 -14
  33. package/lib/markdown/createSchemaTable.js +0 -217
  34. package/src/markdown/createFullWidthTable.ts +0 -16
  35. package/src/markdown/createParamsTable.ts +0 -102
  36. package/src/markdown/createRequestBodyTable.ts +0 -17
  37. package/src/markdown/createSchemaTable.ts +0 -275
  38. package/yarn-error.log +0 -15179
package/src/index.ts CHANGED
@@ -32,8 +32,7 @@ export default function pluginOpenAPI(
32
32
 
33
33
  try {
34
34
  const openapiFiles = await readOpenapiFiles(contentPath, {});
35
- const loadedApi = await processOpenapiFiles(openapiFiles);
36
-
35
+ const [loadedApi, tags] = await processOpenapiFiles(openapiFiles);
37
36
  if (!fs.existsSync(outputDir)) {
38
37
  try {
39
38
  fs.mkdirSync(outputDir, { recursive: true });
@@ -51,7 +50,8 @@ export default function pluginOpenAPI(
51
50
  const sidebarSlice = generateSidebarSlice(
52
51
  sidebarOptions!, // TODO: find a better way to handle null
53
52
  options,
54
- loadedApi
53
+ loadedApi,
54
+ tags
55
55
  );
56
56
 
57
57
  const sidebarSliceTemplate = template
@@ -81,7 +81,12 @@ export default function pluginOpenAPI(
81
81
  ? fs.readFileSync(template).toString()
82
82
  : `---
83
83
  id: {{{id}}}
84
+ {{^api}}
85
+ sidebar_label: Introduction
86
+ {{/api}}
87
+ {{#api}}
84
88
  sidebar_label: {{{title}}}
89
+ {{/api}}
85
90
  {{^api}}
86
91
  sidebar_position: 0
87
92
  {{/api}}
@@ -100,6 +105,24 @@ sidebar_class_name: "{{{api.method}}} api-method"
100
105
  {{{markdown}}}
101
106
  `;
102
107
 
108
+ const infoMdTemplate = template
109
+ ? fs.readFileSync(template).toString()
110
+ : `---
111
+ id: {{{id}}}
112
+ sidebar_label: {{{title}}}
113
+ hide_title: true
114
+ ---
115
+
116
+ {{{markdown}}}
117
+
118
+ \`\`\`mdx-code-block
119
+ import DocCardList from '@theme/DocCardList';
120
+ import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
121
+
122
+ <DocCardList items={useCurrentSidebarCategory().items}/>
123
+ \`\`\`
124
+ `;
125
+
103
126
  loadedApi.map(async (item) => {
104
127
  const markdown =
105
128
  item.type === "api" ? createApiPageMD(item) : createInfoPageMD(item);
@@ -108,6 +131,7 @@ sidebar_class_name: "{{{api.method}}} api-method"
108
131
  item.json = JSON.stringify(item.api);
109
132
  }
110
133
  const view = render(mdTemplate, item);
134
+ const utils = render(infoMdTemplate, item);
111
135
 
112
136
  if (item.type === "api") {
113
137
  if (!fs.existsSync(`${outputDir}/${item.id}.api.mdx`)) {
@@ -129,15 +153,27 @@ sidebar_class_name: "{{{api.method}}} api-method"
129
153
 
130
154
  // TODO: determine if we actually want/need this
131
155
  if (item.type === "info") {
132
- if (!fs.existsSync(`${outputDir}/index.api.mdx`)) {
156
+ if (!fs.existsSync(`${outputDir}/${item.id}.info.mdx`)) {
133
157
  try {
134
- fs.writeFileSync(`${outputDir}/index.api.mdx`, view, "utf8");
158
+ sidebarOptions?.useInfoAsCategoryLink
159
+ ? fs.writeFileSync(
160
+ `${outputDir}/${item.id}.info.mdx`,
161
+ utils,
162
+ "utf8"
163
+ )
164
+ : fs.writeFileSync(
165
+ `${outputDir}/${item.id}.info.mdx`,
166
+ view,
167
+ "utf8"
168
+ );
135
169
  console.log(
136
- chalk.green(`Successfully created "${outputDir}/index.api.mdx"`)
170
+ chalk.green(
171
+ `Successfully created "${outputDir}/${item.id}.info.mdx"`
172
+ )
137
173
  );
138
174
  } catch (err) {
139
175
  console.error(
140
- chalk.red(`Failed to write "${outputDir}/index.api.mdx"`),
176
+ chalk.red(`Failed to write "${outputDir}/${item.id}.info.mdx"`),
141
177
  chalk.yellow(err)
142
178
  );
143
179
  }
@@ -155,7 +191,7 @@ sidebar_class_name: "{{{api.method}}} api-method"
155
191
  async function cleanApiDocs(options: APIOptions) {
156
192
  const { outputDir } = options;
157
193
  const apiDir = path.join(siteDir, outputDir);
158
- const apiMdxFiles = await Globby(["*.api.mdx"], {
194
+ const apiMdxFiles = await Globby(["*.api.mdx", "*.info.mdx"], {
159
195
  cwd: path.resolve(apiDir),
160
196
  });
161
197
  const sidebarFile = await Globby(["sidebar.js"], {
@@ -0,0 +1,48 @@
1
+ /* ============================================================================
2
+ * Copyright (c) Palo Alto Networks
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ * ========================================================================== */
7
+
8
+ import { ContactObject } from "../openapi/types";
9
+ import { create } from "./utils";
10
+
11
+ export function createContactInfo(contact: ContactObject) {
12
+ if (!contact) return "";
13
+ const { name, url, email } = contact;
14
+
15
+ return create("div", {
16
+ style: {
17
+ display: "flex",
18
+ flexDirection: "column",
19
+ marginBottom: "var(--ifm-paragraph-margin-bottom)",
20
+ },
21
+ children: [
22
+ create("h3", {
23
+ style: {
24
+ marginBottom: "0.25rem",
25
+ },
26
+ children: "Contact",
27
+ }),
28
+ create("span", {
29
+ children: [
30
+ `${name}: `,
31
+ create("a", {
32
+ href: `mailto:${email}`,
33
+ children: `${email}`,
34
+ }),
35
+ ],
36
+ }),
37
+ create("span", {
38
+ children: [
39
+ "URL: ",
40
+ create("a", {
41
+ href: `${url}`,
42
+ children: `${url}`,
43
+ }),
44
+ ],
45
+ }),
46
+ ],
47
+ });
48
+ }
@@ -0,0 +1,32 @@
1
+ /* ============================================================================
2
+ * Copyright (c) Palo Alto Networks
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ * ========================================================================== */
7
+
8
+ import { LicenseObject } from "../openapi/types";
9
+ import { create } from "./utils";
10
+
11
+ export function createLicense(license: LicenseObject) {
12
+ if (!license) return "";
13
+ const { name, url } = license;
14
+
15
+ return create("div", {
16
+ style: {
17
+ marginBottom: "var(--ifm-paragraph-margin-bottom)",
18
+ },
19
+ children: [
20
+ create("h3", {
21
+ style: {
22
+ marginBottom: "0.25rem",
23
+ },
24
+ children: "License",
25
+ }),
26
+ create("a", {
27
+ href: url,
28
+ children: name,
29
+ }),
30
+ ],
31
+ });
32
+ }
@@ -0,0 +1,30 @@
1
+ /* ============================================================================
2
+ * Copyright (c) Palo Alto Networks
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ * ========================================================================== */
7
+
8
+ import { create } from "./utils";
9
+
10
+ export function createTermsOfService(termsOfService: string | undefined) {
11
+ if (!createTermsOfService) return "";
12
+
13
+ return create("div", {
14
+ style: {
15
+ marginBottom: "var(--ifm-paragraph-margin-bottom)",
16
+ },
17
+ children: [
18
+ create("h3", {
19
+ style: {
20
+ marginBottom: "0.25rem",
21
+ },
22
+ children: "Terms of Service",
23
+ }),
24
+ create("a", {
25
+ href: `${termsOfService}`,
26
+ children: termsOfService,
27
+ }),
28
+ ],
29
+ });
30
+ }
@@ -7,12 +7,16 @@
7
7
 
8
8
  import { escape } from "lodash";
9
9
 
10
+ import { ContactObject, LicenseObject } from "../openapi/types";
10
11
  import { ApiPageMetadata, InfoPageMetadata } from "../types";
12
+ import { createContactInfo } from "./createContactInfo";
11
13
  import { createDeprecationNotice } from "./createDeprecationNotice";
12
14
  import { createDescription } from "./createDescription";
15
+ import { createLicense } from "./createLicense";
13
16
  import { createParamsDetails } from "./createParamsDetails";
14
17
  import { createRequestBodyDetails } from "./createRequestBodyDetails";
15
18
  import { createStatusCodes } from "./createStatusCodes";
19
+ import { createTermsOfService } from "./createTermsOfService";
16
20
  import { createVersionBadge } from "./createVersionBadge";
17
21
  import { render } from "./utils";
18
22
 
@@ -45,11 +49,14 @@ export function createApiPageMD({
45
49
  }
46
50
 
47
51
  export function createInfoPageMD({
48
- info: { title, version, description },
52
+ info: { title, version, description, contact, license, termsOfService },
49
53
  }: InfoPageMetadata) {
50
54
  return render([
51
55
  createVersionBadge(version),
52
56
  `# ${escape(title)}\n\n`,
53
57
  createDescription(description),
58
+ createContactInfo(contact as ContactObject),
59
+ createTermsOfService(termsOfService),
60
+ createLicense(license as LicenseObject),
54
61
  ]);
55
62
  }
@@ -81,16 +81,20 @@ function createItems(openapiData: OpenApiObject): ApiMetadata[] {
81
81
 
82
82
  // Only create an info page if we have a description.
83
83
  if (openapiData.info.description) {
84
+ const infoId = kebabCase(openapiData.info.title);
84
85
  const infoPage: PartialPage<InfoPageMetadata> = {
85
86
  type: "info",
86
- id: "introduction",
87
- unversionedId: "introduction",
88
- title: "Introduction",
87
+ id: infoId,
88
+ unversionedId: infoId,
89
+ title: openapiData.info.title,
89
90
  description: openapiData.info.description,
90
- slug: "/introduction",
91
+ slug: "/" + infoId,
91
92
  frontMatter: {},
92
93
  info: {
93
94
  ...openapiData.info,
95
+ tags: openapiData.tags?.map((tagName) =>
96
+ getTagDisplayName(tagName.name!, openapiData.tags ?? [])
97
+ ),
94
98
  title: openapiData.info.title ?? "Introduction",
95
99
  },
96
100
  };
@@ -245,34 +249,47 @@ export async function readOpenapiFiles(
245
249
 
246
250
  export async function processOpenapiFiles(
247
251
  files: OpenApiFiles[]
248
- ): Promise<ApiMetadata[]> {
252
+ ): Promise<[ApiMetadata[], TagObject[]]> {
249
253
  const promises = files.map(async (file) => {
250
- const items = await processOpenapiFile(file.data);
251
- return items.map((item) => ({
254
+ const processedFile = await processOpenapiFile(file.data);
255
+ const itemsObjectsArray = processedFile[0].map((item) => ({
252
256
  ...item,
253
257
  }));
258
+ const tags = processedFile[1];
259
+ return [itemsObjectsArray, tags];
254
260
  });
255
261
  const metadata = await Promise.all(promises);
256
- const items = metadata.flat();
257
- return items;
262
+ const items = metadata
263
+ .map(function (x) {
264
+ return x[0];
265
+ })
266
+ .flat();
267
+ const tags = metadata.map(function (x) {
268
+ return x[1];
269
+ });
270
+ return [items as ApiMetadata[], tags as TagObject[]];
258
271
  }
259
272
 
260
273
  export async function processOpenapiFile(
261
274
  openapiDataWithRefs: OpenApiObjectWithRef
262
- ): Promise<ApiMetadata[]> {
275
+ ): Promise<[ApiMetadata[], TagObject[]]> {
263
276
  const openapiData = await resolveRefs(openapiDataWithRefs);
264
277
  const postmanCollection = await createPostmanCollection(openapiData);
265
278
  const items = createItems(openapiData);
266
279
 
267
280
  bindCollectionToApiItems(items, postmanCollection);
268
281
 
269
- return items;
282
+ let tags: TagObject[] = [];
283
+ if (openapiData.tags !== undefined) {
284
+ tags = openapiData.tags;
285
+ }
286
+ return [items, tags];
270
287
  }
271
288
 
272
289
  // order for picking items as a display name of tags
273
290
  const tagDisplayNameProperties = ["x-displayName", "name"] as const;
274
291
 
275
- function getTagDisplayName(tagName: string, tags: TagObject[]): string {
292
+ export function getTagDisplayName(tagName: string, tags: TagObject[]): string {
276
293
  // find the very own tagObject
277
294
  const tagObject = tags.find((tagObject) => tagObject.name === tagName) ?? {
278
295
  // if none found, just fake one
@@ -40,6 +40,7 @@ export interface InfoObject {
40
40
  contact?: ContactObject;
41
41
  license?: LicenseObject;
42
42
  version: string;
43
+ tags?: String[];
43
44
  }
44
45
 
45
46
  export interface ContactObject {
@@ -294,7 +295,7 @@ export type HeaderObject = Omit<ParameterObject, "name" | "in">;
294
295
  export type HeaderObjectWithRef = Omit<ParameterObjectWithRef, "name" | "in">;
295
296
 
296
297
  export interface TagObject {
297
- name: string;
298
+ name?: string;
298
299
  description?: string;
299
300
  externalDocs?: ExternalDocumentationObject;
300
301
  "x-displayName"?: string;
@@ -400,6 +401,8 @@ export interface HttpSecuritySchemeObject {
400
401
  description?: string;
401
402
  scheme: string;
402
403
  bearerFormat?: string;
404
+ name?: string;
405
+ in?: string;
403
406
  }
404
407
 
405
408
  export interface Oauth2SecuritySchemeObject {
@@ -7,11 +7,14 @@
7
7
 
8
8
  import {
9
9
  ProcessedSidebar,
10
+ SidebarItemCategoryLinkConfig,
10
11
  SidebarItemDoc,
11
12
  } from "@docusaurus/plugin-content-docs/src/sidebars/types";
12
13
  import clsx from "clsx";
14
+ import { kebabCase } from "lodash";
13
15
  import uniq from "lodash/uniq";
14
16
 
17
+ import { TagObject } from "../openapi/types";
15
18
  import type {
16
19
  SidebarOptions,
17
20
  APIOptions,
@@ -23,28 +26,38 @@ function isApiItem(item: ApiMetadata): item is ApiMetadata {
23
26
  return item.type === "api";
24
27
  }
25
28
 
29
+ function isInfoItem(item: ApiMetadata): item is ApiMetadata {
30
+ return item.type === "info";
31
+ }
32
+
26
33
  function groupByTags(
27
34
  items: ApiPageMetadata[],
28
35
  sidebarOptions: SidebarOptions,
29
- options: APIOptions
36
+ options: APIOptions,
37
+ tags: TagObject[]
30
38
  ): ProcessedSidebar {
31
- // TODO: Figure out how to handle these
32
- // const intros = items.filter(isInfoItem).map((item) => {
33
- // return {
34
- // type: "link" as const,
35
- // label: item.title,
36
- // href: item.permalink,
37
- // docId: item.id,
38
- // };
39
- // });
40
-
41
39
  const { outputDir } = options;
42
- const { sidebarCollapsed, sidebarCollapsible, customProps } = sidebarOptions;
40
+ const {
41
+ sidebarCollapsed,
42
+ sidebarCollapsible,
43
+ customProps,
44
+ categoryLinkSource,
45
+ } = sidebarOptions;
46
+ const linkSource = categoryLinkSource ?? "tag";
43
47
 
44
48
  const apiItems = items.filter(isApiItem);
49
+ const infoItems = items.filter(isInfoItem);
50
+ const intros = infoItems.map((item: any) => {
51
+ return {
52
+ id: item.id,
53
+ title: item.title,
54
+ description: item.description,
55
+ tags: item.info.tags,
56
+ };
57
+ });
45
58
 
46
59
  // TODO: make sure we only take the first tag
47
- const tags = uniq(
60
+ const tags_ = uniq(
48
61
  apiItems
49
62
  .flatMap((item) => item.api.tags)
50
63
  .filter((item): item is string => !!item)
@@ -74,11 +87,51 @@ function groupByTags(
74
87
  };
75
88
  }
76
89
 
77
- const tagged = tags
90
+ let introDoc = undefined;
91
+ if (linkSource === "info") {
92
+ const infoItem = infoItems[0];
93
+ const id = infoItem.id;
94
+ introDoc = {
95
+ type: "doc" as const,
96
+ id: `${basePath}/${id}`,
97
+ };
98
+ }
99
+
100
+ const tagged = tags_
78
101
  .map((tag) => {
102
+ // TODO: should we also use the info.title as generated-index title?
103
+ const infoObject = intros.find((i) => i.tags.includes(tag));
104
+ const tagObject = tags.flat().find(
105
+ (t) =>
106
+ (tag === t.name || tag === t["x-displayName"]) ?? {
107
+ name: tag,
108
+ description: `${tag} Index`,
109
+ }
110
+ );
111
+
112
+ // TODO: perhaps move all this into a getLinkConfig() function
113
+ let linkConfig = undefined;
114
+ if (infoObject !== undefined && linkSource === "info") {
115
+ linkConfig = {
116
+ type: "doc",
117
+ id: `${basePath}/${infoObject.id}`,
118
+ } as SidebarItemCategoryLinkConfig;
119
+ }
120
+
121
+ if (tagObject !== undefined && linkSource === "tag") {
122
+ const linkDescription = tagObject?.description;
123
+ linkConfig = {
124
+ type: "generated-index" as "generated-index",
125
+ title: tag,
126
+ description: linkDescription,
127
+ slug: "/category/" + kebabCase(tag),
128
+ } as SidebarItemCategoryLinkConfig;
129
+ }
130
+
79
131
  return {
80
132
  type: "category" as const,
81
133
  label: tag,
134
+ link: linkConfig,
82
135
  collapsible: sidebarCollapsible,
83
136
  collapsed: sidebarCollapsed,
84
137
  items: apiItems
@@ -88,33 +141,40 @@ function groupByTags(
88
141
  })
89
142
  .filter((item) => item.items.length > 0); // Filter out any categories with no items.
90
143
 
144
+ // TODO: determine how we want to handle these
91
145
  // const untagged = [
92
- // // TODO: determine if needed and how
93
146
  // {
94
147
  // type: "category" as const,
95
148
  // label: "UNTAGGED",
96
- // // collapsible: options.sidebarCollapsible, TODO: add option
97
- // // collapsed: options.sidebarCollapsed, TODO: add option
149
+ // collapsible: sidebarCollapsible,
150
+ // collapsed: sidebarCollapsed,
98
151
  // items: apiItems
99
- // //@ts-ignore
100
152
  // .filter(({ api }) => api.tags === undefined || api.tags.length === 0)
101
153
  // .map(createDocItem),
102
154
  // },
103
155
  // ];
156
+
157
+ // Shift intro doc to top of sidebar
158
+ if (introDoc && linkSource === "info") {
159
+ tagged.unshift(introDoc as any);
160
+ }
161
+
104
162
  return [...tagged];
105
163
  }
106
164
 
107
165
  export default function generateSidebarSlice(
108
166
  sidebarOptions: SidebarOptions,
109
167
  options: APIOptions,
110
- api: ApiMetadata[]
168
+ api: ApiMetadata[],
169
+ tags: TagObject[]
111
170
  ) {
112
171
  let sidebarSlice: ProcessedSidebar = [];
113
172
  if (sidebarOptions.groupPathsBy === "tags") {
114
173
  sidebarSlice = groupByTags(
115
174
  api as ApiPageMetadata[],
116
175
  sidebarOptions,
117
- options
176
+ options,
177
+ tags
118
178
  );
119
179
  }
120
180
  return sidebarSlice;
package/src/types.ts CHANGED
@@ -90,6 +90,8 @@ export interface ApiNavLink {
90
90
 
91
91
  export interface SidebarOptions {
92
92
  groupPathsBy?: string;
93
+ useInfoAsCategoryLink?: boolean; // TODO: confirm name of option
94
+ categoryLinkSource?: string;
93
95
  customProps?: { [key: string]: unknown };
94
96
  sidebarCollapsible?: boolean;
95
97
  sidebarCollapsed?: boolean;
@@ -1,2 +0,0 @@
1
- import { Props } from "./utils";
2
- export declare function createFullWidthTable({ children, style, ...rest }: Props): string;
@@ -1,18 +0,0 @@
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.createFullWidthTable = void 0;
10
- const utils_1 = require("./utils");
11
- function createFullWidthTable({ children, style, ...rest }) {
12
- return (0, utils_1.create)("table", {
13
- style: { display: "table", width: "100%", ...style },
14
- ...rest,
15
- children,
16
- });
17
- }
18
- exports.createFullWidthTable = createFullWidthTable;
@@ -1,7 +0,0 @@
1
- import { ApiItem } from "../types";
2
- interface Props {
3
- parameters: ApiItem["parameters"];
4
- type: "path" | "query" | "header" | "cookie";
5
- }
6
- export declare function createParamsTable({ parameters, type }: Props): string | undefined;
7
- export {};
@@ -1,80 +0,0 @@
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.createParamsTable = void 0;
10
- const lodash_1 = require("lodash");
11
- const createDescription_1 = require("./createDescription");
12
- const createFullWidthTable_1 = require("./createFullWidthTable");
13
- const schema_1 = require("./schema");
14
- const utils_1 = require("./utils");
15
- function createParamsTable({ parameters, type }) {
16
- if (parameters === undefined) {
17
- return undefined;
18
- }
19
- const params = parameters.filter((param) => (param === null || param === void 0 ? void 0 : param.in) === type);
20
- if (params.length === 0) {
21
- return undefined;
22
- }
23
- return (0, createFullWidthTable_1.createFullWidthTable)({
24
- children: [
25
- (0, utils_1.create)("thead", {
26
- children: (0, utils_1.create)("tr", {
27
- children: (0, utils_1.create)("th", {
28
- style: { textAlign: "left" },
29
- children: `${type.charAt(0).toUpperCase() + type.slice(1)} Parameters`,
30
- }),
31
- }),
32
- }),
33
- (0, utils_1.create)("tbody", {
34
- children: params.map((param) => (0, utils_1.create)("tr", {
35
- children: (0, utils_1.create)("td", {
36
- children: [
37
- (0, utils_1.create)("code", { children: param.name }),
38
- (0, utils_1.guard)(param.schema, (schema) => (0, utils_1.create)("span", {
39
- style: { opacity: "0.6" },
40
- children: ` ${(0, schema_1.getSchemaName)(schema)}`,
41
- })),
42
- (0, utils_1.guard)(param.required, () => [
43
- (0, utils_1.create)("span", {
44
- style: { opacity: "0.6" },
45
- children: " — ",
46
- }),
47
- (0, utils_1.create)("strong", {
48
- style: {
49
- fontSize: "var(--ifm-code-font-size)",
50
- color: "var(--openapi-required)",
51
- },
52
- children: " REQUIRED",
53
- }),
54
- ]),
55
- (0, utils_1.guard)((0, schema_1.getQualifierMessage)(param.schema), (message) => (0, utils_1.create)("div", {
56
- style: { marginTop: "var(--ifm-table-cell-padding)" },
57
- children: (0, createDescription_1.createDescription)(message),
58
- })),
59
- (0, utils_1.guard)(param.description, (description) => (0, utils_1.create)("div", {
60
- style: { marginTop: "var(--ifm-table-cell-padding)" },
61
- children: (0, createDescription_1.createDescription)(description),
62
- })),
63
- (0, utils_1.guard)(param.example, (example) => (0, utils_1.create)("div", {
64
- style: { marginTop: "var(--ifm-table-cell-padding)" },
65
- children: (0, lodash_1.escape)(`Example: ${example}`),
66
- })),
67
- (0, utils_1.guard)(param.examples, (examples) => (0, utils_1.create)("div", {
68
- style: { marginTop: "var(--ifm-table-cell-padding)" },
69
- children: Object.entries(examples).map(([k, v]) => (0, utils_1.create)("div", {
70
- children: (0, lodash_1.escape)(`Example (${k}): ${v.value}`),
71
- })),
72
- })),
73
- ],
74
- }),
75
- })),
76
- }),
77
- ],
78
- });
79
- }
80
- exports.createParamsTable = createParamsTable;
@@ -1,6 +0,0 @@
1
- interface Props {
2
- title: string;
3
- body: any;
4
- }
5
- export declare function createRequestBodyTable({ title, body }: Props): string | undefined;
6
- export {};
@@ -1,14 +0,0 @@
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.createRequestBodyTable = void 0;
10
- const createSchemaTable_1 = require("./createSchemaTable");
11
- function createRequestBodyTable({ title, body }) {
12
- return (0, createSchemaTable_1.createSchemaTable)({ title, body });
13
- }
14
- exports.createRequestBodyTable = createRequestBodyTable;