zudoku 0.3.0-dev.116 → 0.3.0-dev.119

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 (157) hide show
  1. package/dist/app/demo.js +3 -1
  2. package/dist/app/demo.js.map +1 -1
  3. package/dist/app/main.js +1 -1
  4. package/dist/app/main.js.map +1 -1
  5. package/dist/app/standalone.js +3 -1
  6. package/dist/app/standalone.js.map +1 -1
  7. package/dist/cli/dev/handler.js +1 -1
  8. package/dist/lib/components/Markdown.js +3 -2
  9. package/dist/lib/components/Markdown.js.map +1 -1
  10. package/dist/lib/components/navigation/SidebarCategory.js +6 -2
  11. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  12. package/dist/lib/components/navigation/SidebarItem.js +3 -2
  13. package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
  14. package/dist/lib/oas/graphql/index.js +17 -2
  15. package/dist/lib/oas/graphql/index.js.map +1 -1
  16. package/dist/lib/plugins/markdown/MdxPage.js +1 -1
  17. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  18. package/dist/lib/plugins/openapi/OperationListItem.js +6 -4
  19. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  20. package/dist/lib/plugins/openapi/ParameterList.js +3 -1
  21. package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
  22. package/dist/lib/plugins/openapi/ResponsesSidecarBox.d.ts +3 -1
  23. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +5 -9
  24. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  25. package/dist/lib/plugins/openapi/Sidecar.d.ts +3 -1
  26. package/dist/lib/plugins/openapi/Sidecar.js +6 -4
  27. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  28. package/dist/lib/plugins/openapi/schema/SchemaComponents.d.ts +13 -0
  29. package/dist/lib/plugins/openapi/schema/SchemaComponents.js +28 -0
  30. package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +1 -0
  31. package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +6 -0
  32. package/dist/lib/plugins/openapi/schema/SchemaView.js +44 -0
  33. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -0
  34. package/dist/lib/plugins/openapi/schema/utils.d.ts +3 -0
  35. package/dist/lib/plugins/openapi/schema/utils.js +6 -0
  36. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -0
  37. package/dist/lib/themeToggle.d.ts +1 -0
  38. package/dist/lib/themeToggle.js +7 -0
  39. package/dist/lib/themeToggle.js.map +1 -0
  40. package/dist/lib/util/MdxComponents.js +4 -4
  41. package/dist/lib/util/MdxComponents.js.map +1 -1
  42. package/dist/vite/config.d.ts +4 -5
  43. package/dist/vite/config.js +7 -4
  44. package/dist/vite/config.js.map +1 -1
  45. package/dist/vite/config.test.js +2 -2
  46. package/dist/vite/config.test.js.map +1 -1
  47. package/dist/vite/dev-server.d.ts +0 -1
  48. package/dist/vite/dev-server.js +2 -21
  49. package/dist/vite/dev-server.js.map +1 -1
  50. package/dist/vite/html.js +2 -11
  51. package/dist/vite/html.js.map +1 -1
  52. package/dist/vite/plugin-api-keys.d.ts +3 -3
  53. package/dist/vite/plugin-api-keys.js +2 -1
  54. package/dist/vite/plugin-api-keys.js.map +1 -1
  55. package/dist/vite/plugin-api.d.ts +3 -3
  56. package/dist/vite/plugin-api.js +2 -1
  57. package/dist/vite/plugin-api.js.map +1 -1
  58. package/dist/vite/plugin-auth.d.ts +3 -3
  59. package/dist/vite/plugin-auth.js +2 -1
  60. package/dist/vite/plugin-auth.js.map +1 -1
  61. package/dist/vite/plugin-component.d.ts +3 -3
  62. package/dist/vite/plugin-component.js +17 -14
  63. package/dist/vite/plugin-component.js.map +1 -1
  64. package/dist/vite/plugin-config-reload.d.ts +4 -0
  65. package/dist/vite/plugin-config-reload.js +24 -0
  66. package/dist/vite/plugin-config-reload.js.map +1 -0
  67. package/dist/vite/plugin-config.d.ts +2 -2
  68. package/dist/vite/plugin-config.js.map +1 -1
  69. package/dist/vite/plugin-custom-css.d.ts +3 -3
  70. package/dist/vite/plugin-custom-css.js +2 -1
  71. package/dist/vite/plugin-custom-css.js.map +1 -1
  72. package/dist/vite/plugin-docs.d.ts +3 -3
  73. package/dist/vite/plugin-docs.js +3 -2
  74. package/dist/vite/plugin-docs.js.map +1 -1
  75. package/dist/vite/plugin-html-transform.d.ts +2 -0
  76. package/dist/vite/plugin-html-transform.js +15 -0
  77. package/dist/vite/plugin-html-transform.js.map +1 -0
  78. package/dist/vite/plugin-mdx.d.ts +3 -3
  79. package/dist/vite/plugin-mdx.js +2 -1
  80. package/dist/vite/plugin-mdx.js.map +1 -1
  81. package/dist/vite/plugin-metadata.d.ts +1 -1
  82. package/dist/vite/plugin-redirect.d.ts +3 -3
  83. package/dist/vite/plugin-redirect.js +2 -1
  84. package/dist/vite/plugin-redirect.js.map +1 -1
  85. package/dist/vite/plugin-sidebar.d.ts +3 -3
  86. package/dist/vite/plugin-sidebar.js +2 -1
  87. package/dist/vite/plugin-sidebar.js.map +1 -1
  88. package/dist/vite/plugin.d.ts +3 -2
  89. package/dist/vite/plugin.js +16 -11
  90. package/dist/vite/plugin.js.map +1 -1
  91. package/lib/{CategoryHeading-BWq12Bfa.js → CategoryHeading-z15xh7Jb.js} +2 -2
  92. package/lib/{CategoryHeading-BWq12Bfa.js.map → CategoryHeading-z15xh7Jb.js.map} +1 -1
  93. package/lib/{Combination-D-9IH0zy.js → Combination-DTfV-c98.js} +2 -2
  94. package/lib/{Combination-D-9IH0zy.js.map → Combination-DTfV-c98.js.map} +1 -1
  95. package/lib/{Input-HmAaR6kw.js → Input-DB9VROFR.js} +3 -3
  96. package/lib/{Input-HmAaR6kw.js.map → Input-DB9VROFR.js.map} +1 -1
  97. package/lib/Markdown-CEccPMI_.js +20508 -0
  98. package/lib/Markdown-CEccPMI_.js.map +1 -0
  99. package/lib/{MdxPage-oN3huD58.js → MdxPage-CnqOoqvp.js} +12 -15
  100. package/lib/MdxPage-CnqOoqvp.js.map +1 -0
  101. package/lib/OperationList-MFaKgMyg.js +414 -0
  102. package/lib/OperationList-MFaKgMyg.js.map +1 -0
  103. package/lib/{Route-DAF15JAU.js → Route-CL9hUSJ2.js} +2 -2
  104. package/lib/{Route-DAF15JAU.js.map → Route-CL9hUSJ2.js.map} +1 -1
  105. package/lib/{SlotletProvider-BG2PU1Mf.js → SlotletProvider-ByLSCZQa.js} +3 -3
  106. package/lib/{SlotletProvider-BG2PU1Mf.js.map → SlotletProvider-ByLSCZQa.js.map} +1 -1
  107. package/lib/{Spinner-BCz1kNGw.js → Spinner-BT_AYFrA.js} +3 -3
  108. package/lib/{Spinner-BCz1kNGw.js.map → Spinner-BT_AYFrA.js.map} +1 -1
  109. package/lib/assets/{worker-CR7aeKop.js → worker-TEvS6miZ.js} +709 -702
  110. package/lib/assets/{worker-CR7aeKop.js.map → worker-TEvS6miZ.js.map} +1 -1
  111. package/lib/{index-CtKkHGcd.js → index-Bf5yypxf.js} +671 -640
  112. package/lib/{index-CtKkHGcd.js.map → index-Bf5yypxf.js.map} +1 -1
  113. package/lib/{index-D-9Z7HSn.js → index-Dz4LyXZI.js} +3 -3
  114. package/lib/{index-D-9Z7HSn.js.map → index-Dz4LyXZI.js.map} +1 -1
  115. package/lib/zudoku.components.js +494 -481
  116. package/lib/zudoku.components.js.map +1 -1
  117. package/lib/zudoku.openapi-worker.js +733 -726
  118. package/lib/zudoku.openapi-worker.js.map +1 -1
  119. package/lib/zudoku.plugin-api-keys.js +4 -4
  120. package/lib/zudoku.plugin-custom-page.js +1 -1
  121. package/lib/zudoku.plugin-markdown.js +1 -1
  122. package/lib/zudoku.plugin-openapi.js +3 -3
  123. package/package.json +2 -1
  124. package/src/app/demo.tsx +4 -1
  125. package/src/app/main.tsx +1 -1
  126. package/src/app/standalone.tsx +4 -1
  127. package/src/lib/components/Markdown.tsx +3 -2
  128. package/src/lib/components/navigation/SidebarCategory.tsx +13 -2
  129. package/src/lib/components/navigation/SidebarItem.tsx +3 -2
  130. package/src/lib/oas/graphql/index.ts +24 -5
  131. package/src/lib/plugins/markdown/MdxPage.tsx +0 -1
  132. package/src/lib/plugins/openapi/OperationListItem.tsx +18 -8
  133. package/src/lib/plugins/openapi/ParameterList.tsx +10 -8
  134. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +51 -39
  135. package/src/lib/plugins/openapi/Sidecar.tsx +13 -4
  136. package/src/lib/plugins/openapi/schema/SchemaComponents.tsx +126 -0
  137. package/src/lib/plugins/openapi/schema/SchemaView.tsx +112 -0
  138. package/src/lib/plugins/openapi/schema/utils.ts +10 -0
  139. package/src/lib/themeToggle.ts +7 -0
  140. package/src/lib/util/MdxComponents.tsx +12 -12
  141. package/dist/lib/plugins/openapi/SchemaListView.d.ts +0 -7
  142. package/dist/lib/plugins/openapi/SchemaListView.js +0 -27
  143. package/dist/lib/plugins/openapi/SchemaListView.js.map +0 -1
  144. package/dist/lib/plugins/openapi/SchemaListViewItem.d.ts +0 -8
  145. package/dist/lib/plugins/openapi/SchemaListViewItem.js +0 -25
  146. package/dist/lib/plugins/openapi/SchemaListViewItem.js.map +0 -1
  147. package/dist/lib/plugins/openapi/SchemaListViewItemGroup.d.ts +0 -8
  148. package/dist/lib/plugins/openapi/SchemaListViewItemGroup.js +0 -17
  149. package/dist/lib/plugins/openapi/SchemaListViewItemGroup.js.map +0 -1
  150. package/lib/Markdown-B_Gax7at.js +0 -14108
  151. package/lib/Markdown-B_Gax7at.js.map +0 -1
  152. package/lib/MdxPage-oN3huD58.js.map +0 -1
  153. package/lib/OperationList-Ctj0ihBN.js +0 -448
  154. package/lib/OperationList-Ctj0ihBN.js.map +0 -1
  155. package/src/lib/plugins/openapi/SchemaListView.tsx +0 -75
  156. package/src/lib/plugins/openapi/SchemaListViewItem.tsx +0 -125
  157. package/src/lib/plugins/openapi/SchemaListViewItemGroup.tsx +0 -63
@@ -0,0 +1,126 @@
1
+ import * as Collapsible from "@radix-ui/react-collapsible";
2
+ import { ListPlusIcon } from "lucide-react";
3
+ import { useState } from "react";
4
+ import { Markdown, ProseClasses } from "../../../components/Markdown.js";
5
+ import type { SchemaObject } from "../../../oas/parser/index.js";
6
+ import { Button } from "../../../ui/Button.js";
7
+ import { cn } from "../../../util/cn.js";
8
+ import { SchemaView } from "./SchemaView.js";
9
+ import { hasLogicalGroupings, isComplexType } from "./utils.js";
10
+
11
+ export const SchemaLogicalGroup = ({
12
+ schema,
13
+ level,
14
+ }: {
15
+ schema: SchemaObject;
16
+ level: number;
17
+ }) => {
18
+ const renderLogicalGroup = (
19
+ group: SchemaObject[],
20
+ groupName: string,
21
+ separator: string,
22
+ ) => {
23
+ return group.map((subSchema, index) => (
24
+ <div key={index} className="my-2">
25
+ <strong>{groupName}</strong>
26
+ <div className="mt-2">
27
+ <SchemaView schema={subSchema} level={level + 1} />
28
+ {index < group.length - 1 && (
29
+ <div className="text-center my-2">{separator}</div>
30
+ )}
31
+ </div>
32
+ </div>
33
+ ));
34
+ };
35
+
36
+ if (schema.oneOf) return renderLogicalGroup(schema.oneOf, "One of", "OR");
37
+ if (schema.allOf) return renderLogicalGroup(schema.allOf, "All of", "AND");
38
+ if (schema.anyOf) return renderLogicalGroup(schema.anyOf, "Any of", "OR");
39
+
40
+ return null;
41
+ };
42
+
43
+ export const SchemaPropertyItem = ({
44
+ name,
45
+ value,
46
+ group,
47
+ level,
48
+ defaultOpen = false,
49
+ showCollapseButton = true,
50
+ }: {
51
+ name: string;
52
+ value: SchemaObject;
53
+ group: "required" | "optional" | "deprecated";
54
+ level: number;
55
+ defaultOpen?: boolean;
56
+ showCollapseButton?: boolean;
57
+ }) => {
58
+ const [isOpen, setIsOpen] = useState(defaultOpen);
59
+
60
+ return (
61
+ <li className="p-4 bg-border/20 hover:bg-border/30">
62
+ <div className="flex flex-col gap-1 justify-between text-sm">
63
+ <div className="flex gap-2 items-center">
64
+ <code>{name}</code>
65
+ <span className="text-muted-foreground">
66
+ {value.type === "array" && value.items?.type ? (
67
+ <span>{value.items.type}[]</span>
68
+ ) : Array.isArray(value.type) ? (
69
+ <span>{value.type.join(" | ")}</span>
70
+ ) : (
71
+ <span>{value.type}</span>
72
+ )}
73
+ </span>
74
+ {group === "optional" && (
75
+ <span className="py-px px-1.5 font-medium border rounded-lg">
76
+ optional
77
+ </span>
78
+ )}
79
+ </div>
80
+
81
+ {value.description && (
82
+ <Markdown
83
+ className={cn(ProseClasses, "text-sm leading-normal line-clamp-4")}
84
+ content={value.description}
85
+ />
86
+ )}
87
+
88
+ {(hasLogicalGroupings(value) ?? isComplexType(value)) && (
89
+ <Collapsible.Root
90
+ defaultOpen={defaultOpen}
91
+ open={isOpen}
92
+ onOpenChange={() => setIsOpen(!isOpen)}
93
+ >
94
+ {showCollapseButton && (
95
+ <Collapsible.Trigger asChild>
96
+ <Button
97
+ variant="outline"
98
+ size="sm"
99
+ className="mt-2 flex gap-1.5"
100
+ >
101
+ <ListPlusIcon size={18} />
102
+ {!isOpen
103
+ ? "Show nested properties"
104
+ : "Hide nested properties"}
105
+ </Button>
106
+ </Collapsible.Trigger>
107
+ )}
108
+ <Collapsible.Content>
109
+ <div className="mt-2">
110
+ {hasLogicalGroupings(value) && (
111
+ <SchemaLogicalGroup schema={value} level={level + 1} />
112
+ )}
113
+ {value.type === "object" && (
114
+ <SchemaView schema={value} level={level + 1} />
115
+ )}
116
+ {value.type === "array" && typeof value.items === "object" && (
117
+ <SchemaView schema={value.items} level={level + 1} />
118
+ )}
119
+ </div>
120
+ </Collapsible.Content>
121
+ </Collapsible.Root>
122
+ )}
123
+ </div>
124
+ </li>
125
+ );
126
+ };
@@ -0,0 +1,112 @@
1
+ import type { SchemaObject } from "../../../oas/parser/index.js";
2
+ import { Card, CardContent, CardHeader, CardTitle } from "../../../ui/Card.js";
3
+ import { groupBy } from "../../../util/groupBy.js";
4
+ import { SchemaLogicalGroup, SchemaPropertyItem } from "./SchemaComponents.js";
5
+ import { hasLogicalGroupings } from "./utils.js";
6
+
7
+ export const SchemaView = ({
8
+ schema,
9
+ level = 0,
10
+ defaultOpen = false,
11
+ }: {
12
+ schema: SchemaObject;
13
+ level?: number;
14
+ defaultOpen?: boolean;
15
+ }) => {
16
+ const renderSchema = (schema: SchemaObject, level: number) => {
17
+ if (schema.oneOf || schema.allOf || schema.anyOf) {
18
+ return <SchemaLogicalGroup schema={schema} level={level} />;
19
+ }
20
+
21
+ if (schema.type === "array" && schema.items) {
22
+ const itemsSchema = schema.items as SchemaObject;
23
+
24
+ if (
25
+ typeof itemsSchema.type === "string" &&
26
+ ["string", "number", "boolean", "integer"].includes(itemsSchema.type)
27
+ ) {
28
+ return (
29
+ <Card className="my-2">
30
+ <CardContent>
31
+ <strong>{`array<${itemsSchema.type}>`}</strong>
32
+ {schema.description && <p>{schema.description}</p>}
33
+ </CardContent>
34
+ </Card>
35
+ );
36
+ } else if (
37
+ itemsSchema.type === "object" ||
38
+ hasLogicalGroupings(itemsSchema)
39
+ ) {
40
+ return (
41
+ <Card className="flex flex-col gap-2 bg-border/30 p-4 ">
42
+ <span className="text-sm text-muted-foreground">object[]</span>
43
+ {renderSchema(itemsSchema, level + 1)}
44
+ </Card>
45
+ );
46
+ } else {
47
+ return renderSchema(itemsSchema, level + 1);
48
+ }
49
+ }
50
+
51
+ if (schema.properties) {
52
+ const groupedProperties = groupBy(
53
+ Object.entries(schema.properties),
54
+ ([propertyName, property]) => {
55
+ return property.deprecated
56
+ ? "deprecated"
57
+ : schema.required?.includes(propertyName)
58
+ ? "required"
59
+ : "optional";
60
+ },
61
+ );
62
+
63
+ const isTopLevelSingleItem =
64
+ level === 0 && Object.keys(groupedProperties).length === 1;
65
+
66
+ const groupNames = ["required", "optional", "deprecated"] as const;
67
+
68
+ return (
69
+ <Card className="divide-y overflow-hidden">
70
+ {groupNames.map(
71
+ (group) =>
72
+ groupedProperties[group] && (
73
+ <ul key={group} className="divide-y">
74
+ {groupedProperties[group].map(([key, value]) => (
75
+ <SchemaPropertyItem
76
+ key={key}
77
+ name={key}
78
+ value={value}
79
+ group={group}
80
+ level={level}
81
+ defaultOpen={isTopLevelSingleItem || defaultOpen}
82
+ showCollapseButton={!isTopLevelSingleItem}
83
+ />
84
+ ))}
85
+ </ul>
86
+ ),
87
+ )}
88
+ </Card>
89
+ );
90
+ }
91
+
92
+ if (schema.additionalProperties) {
93
+ return (
94
+ <Card className="my-2">
95
+ <CardHeader>
96
+ <CardTitle>Additional Properties:</CardTitle>
97
+ </CardHeader>
98
+ <CardContent>
99
+ {renderSchema(
100
+ schema.additionalProperties as SchemaObject,
101
+ level + 1,
102
+ )}
103
+ </CardContent>
104
+ </Card>
105
+ );
106
+ }
107
+
108
+ return null;
109
+ };
110
+
111
+ return renderSchema(schema, level);
112
+ };
@@ -0,0 +1,10 @@
1
+ import type { SchemaObject } from "../../../oas/parser/index.js";
2
+
3
+ export const isComplexType = (value: SchemaObject) =>
4
+ value.type === "object" ||
5
+ (value.type === "array" &&
6
+ typeof value.items === "object" &&
7
+ (!value.items.type || value.items.type === "object"));
8
+
9
+ export const hasLogicalGroupings = (value: SchemaObject) =>
10
+ Boolean(value.oneOf ?? value.allOf ?? value.anyOf);
@@ -0,0 +1,7 @@
1
+ export const themeToggle = () => {
2
+ const isDarkMode =
3
+ localStorage.getItem("theme") === "dark" ||
4
+ (!localStorage.getItem("theme") &&
5
+ window.matchMedia("(prefers-color-scheme: dark)").matches);
6
+ document.documentElement.classList.toggle("dark", isDarkMode);
7
+ };
@@ -69,19 +69,19 @@ export const MdxComponents = {
69
69
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
70
  const inline = (props as any).inline;
71
71
 
72
- if (!inline) {
73
- const match = className?.match(/language?-(\w+)/);
74
-
75
- return (
76
- <SyntaxHighlight
77
- language={match?.[1] ?? "markup"}
78
- className="rounded-xl overflow-x-auto p-4 border dark:!bg-foreground/10 dark:border-transparent"
79
- showLanguageIndicator
80
- code={String(children).trim()}
81
- />
82
- );
72
+ if (inline === true || inline === "true") {
73
+ return <InlineCode className={className}>{children}</InlineCode>;
83
74
  }
84
75
 
85
- return <InlineCode className={className}>{children}</InlineCode>;
76
+ const match = className?.match(/language?-(\w+)/);
77
+
78
+ return (
79
+ <SyntaxHighlight
80
+ language={match?.[1] ?? "markup"}
81
+ className="rounded-xl overflow-x-auto p-4 border dark:!bg-foreground/10 dark:border-transparent"
82
+ showLanguageIndicator
83
+ code={String(children).trim()}
84
+ />
85
+ );
86
86
  },
87
87
  } satisfies MdxComponentsType;
@@ -1,7 +0,0 @@
1
- import { SchemaObject } from "../../oas/parser/index.js";
2
- export declare const SchemaListView: ({ name, schema, level, defaultOpen, }: {
3
- level?: number;
4
- defaultOpen?: boolean;
5
- name?: string;
6
- schema: SchemaObject;
7
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,27 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Markdown } from "../../components/Markdown.js";
3
- import { Card } from "../../ui/Card.js";
4
- import { groupBy } from "../../util/groupBy.js";
5
- import { objectEntries } from "../../util/objectEntries.js";
6
- import { SchemaListViewItem } from "./SchemaListViewItem.js";
7
- import { SchemaListViewItemGroup } from "./SchemaListViewItemGroup.js";
8
- import { SchemaProseClasses } from "./util/prose.js";
9
- export const SchemaListView = ({ name, schema, level = 0, defaultOpen = false, }) => {
10
- const properties = Object.entries(schema.properties ?? {});
11
- const additionalProperties = typeof schema.additionalProperties === "object"
12
- ? Object.entries(schema.additionalProperties)
13
- : [];
14
- const combinedProperties = properties.concat(Array.isArray(additionalProperties) ? additionalProperties : []);
15
- const groups = groupBy(combinedProperties, ([propertyName, property]) => {
16
- return property.deprecated
17
- ? "deprecated"
18
- : schema.required?.includes(propertyName)
19
- ? "required"
20
- : "optional";
21
- });
22
- if (schema.type === "array") {
23
- return (_jsx(Card, { className: "overflow-hidden", children: _jsx(SchemaListViewItem, { propertyName: schema.title ?? name, isRequired: true, property: schema, defaultOpen: level === 0, nestingLevel: level }) }));
24
- }
25
- return (_jsxs("div", { className: "flex flex-col gap-2.5", children: [(schema.title ?? name) && (_jsx("div", { className: "ml-2 my-1 font-bold", children: schema.title ?? name })), level === 0 && schema.description && (_jsx(Markdown, { className: SchemaProseClasses, content: schema.description })), _jsx(Card, { className: "overflow-hidden", children: objectEntries(groups).map(([group, properties]) => (_jsx(SchemaListViewItemGroup, { defaultOpen: defaultOpen, group: group, nestingLevel: level, properties: properties ?? [], required: schema.required ?? [] }, group))) })] }));
26
- };
27
- //# sourceMappingURL=SchemaListView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaListView.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/SchemaListView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,KAAK,GAMpB,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,oBAAoB,GACxB,OAAO,MAAM,CAAC,oBAAoB,KAAK,QAAQ;QAC7C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAC1C,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAChE,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE;QACtE,OAAO,QAAQ,CAAC,UAAU;YACxB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC;gBACvC,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,UAAU,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,YAC/B,KAAC,kBAAkB,IACjB,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAClC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,KAAK,KAAK,CAAC,EACxB,YAAY,EAAE,KAAK,GACnB,GACG,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,aACnC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CACzB,cAAK,SAAS,EAAC,qBAAqB,YAAE,MAAM,CAAC,KAAK,IAAI,IAAI,GAAO,CAClE,EACA,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CACpC,KAAC,QAAQ,IAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,GAAI,CACzE,EACD,KAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,YAC9B,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAClD,KAAC,uBAAuB,IAEtB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,KAAK,EACnB,UAAU,EAAE,UAAU,IAAI,EAAE,EAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,IAL1B,KAAK,CAMV,CACH,CAAC,GACG,IACH,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1,8 +0,0 @@
1
- import { SchemaObject } from "../../oas/parser/index.js";
2
- export declare const SchemaListViewItem: ({ propertyName, property, nestingLevel, isRequired, defaultOpen, }: {
3
- propertyName?: string;
4
- isRequired: boolean;
5
- property: SchemaObject;
6
- nestingLevel: number;
7
- defaultOpen?: boolean;
8
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,25 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import * as Collapsible from "@radix-ui/react-collapsible";
3
- import { ListPlusIcon } from "lucide-react";
4
- import { Markdown } from "../../components/Markdown.js";
5
- import { Button } from "../../ui/Button.js";
6
- import { cn } from "../../util/cn.js";
7
- import { SchemaListView } from "./SchemaListView.js";
8
- export const SchemaListViewItem = ({ propertyName, property, nestingLevel, isRequired, defaultOpen = false, }) => {
9
- if (!property) {
10
- return _jsx("div", { children: "no property" });
11
- }
12
- const title = propertyName || property.title
13
- ? [propertyName, property.title].filter(Boolean).join(" ")
14
- : null;
15
- return (_jsxs("div", { className: cn("p-4 bg-border/20 hover:bg-border/30 flex gap-1 flex-col text-sm", property.deprecated && "opacity-50"), children: [_jsxs("div", { className: "flex items-center gap-2 relative", children: [title && _jsx("code", { children: title }), property.type && (_jsx("span", { className: "text-muted-foreground", children: property.type })), property.deprecated && (_jsx("span", { className: "text-muted-foreground", children: "Deprecated" })), !isRequired && (_jsxs("span", { className: "py-px px-1.5 font-medium border rounded-lg", children: ["optional ", property.required] }))] }), property.description && (_jsx(Markdown, { content: property.description, className: "text-sm leading-normal line-clamp-4 " })), property.enum && (_jsxs("span", { className: "text-sm text-muted-foreground flex gap-1 flex-wrap items-center", children: [_jsx("span", { children: "Possible values" }), [...new Set(property.enum.filter((value) => value))]
16
- .map((value) => (_jsx("span", { className: "font-mono text-xs border bg-muted rounded px-1", children: value }, value)))
17
- .slice(0, 4), property.enum.length > 4 && (_jsx("span", { className: "font-mono text-xs border bg-muted rounded px-1", children: "..." }))] })), (property.type === "object" &&
18
- (property.properties?.length ??
19
- Object.entries(property.additionalProperties ?? {}).length > 0)) ||
20
- (property.type === "array" &&
21
- // this check is needed because the `items` can be undefined despite the type being defined
22
- typeof property.items !== "undefined" &&
23
- property.items.type === "object") ? (_jsxs(Collapsible.Root, { className: "CollapsibleRoot", defaultOpen: defaultOpen, children: [_jsx(Collapsible.Trigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", className: cn(defaultOpen && "hidden"), children: ["Show nested fields", _jsx(ListPlusIcon, { size: 18, className: "ml-1.5" })] }) }), _jsxs(Collapsible.Content, { children: [property.type === "object" && (_jsx("div", { className: "mt-2.5", children: _jsx(SchemaListView, { schema: property, level: nestingLevel + 1, defaultOpen: true }) })), property.type === "array" && property.items.type === "object" && (_jsx("div", { className: "mt-2.5", children: _jsx(SchemaListView, { schema: property.items, defaultOpen: true, level: nestingLevel + 1 }) }))] })] })) : null] }));
24
- };
25
- //# sourceMappingURL=SchemaListViewItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaListViewItem.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/SchemaListViewItem.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { SchemaObject } from "../../oas/parser/index.js";
2
- export declare const SchemaListViewItemGroup: ({ group, properties, nestingLevel, required, defaultOpen, }: {
3
- group: "optional" | "required" | "deprecated";
4
- defaultOpen?: boolean;
5
- properties: [string, SchemaObject][];
6
- nestingLevel: number;
7
- required: string[];
8
- }) => import("react/jsx-runtime").JSX.Element | undefined;
@@ -1,17 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import * as Collapsible from "@radix-ui/react-collapsible";
3
- import { useState } from "react";
4
- import { cn } from "../../util/cn.js";
5
- import { SchemaListViewItem } from "./SchemaListViewItem.js";
6
- export const SchemaListViewItemGroup = ({ group, properties, nestingLevel, required, defaultOpen = false, }) => {
7
- const notCollapsible = defaultOpen ||
8
- group === "required" ||
9
- properties.length === 1 ||
10
- nestingLevel === 0;
11
- const [open, setOpen] = useState(notCollapsible);
12
- if (properties.length === 0) {
13
- return;
14
- }
15
- return (_jsxs(Collapsible.Root, { className: "CollapsibleRoot", open: open, onOpenChange: setOpen, children: [!open && (_jsxs(Collapsible.Trigger, { className: cn("py-2 hover:bg-muted w-full", group === "optional" && "font-semibold", group === "deprecated" && "text-muted-foreground"), children: [properties.length, " ", group, " fields"] })), _jsx(Collapsible.Content, { className: "divide-y divide-border", children: properties.map(([propertyName, property]) => (_jsx(SchemaListViewItem, { property: property, propertyName: propertyName, nestingLevel: nestingLevel, isRequired: required.includes(propertyName) }, propertyName))) })] }));
16
- };
17
- //# sourceMappingURL=SchemaListViewItemGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaListViewItemGroup.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/SchemaListViewItemGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,KAAK,EACL,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,GAAG,KAAK,GAOpB,EAAE,EAAE;IACH,MAAM,cAAc,GAClB,WAAW;QACX,KAAK,KAAK,UAAU;QACpB,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,YAAY,KAAK,CAAC,CAAC;IAErB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,OAAO,CACL,MAAC,WAAW,CAAC,IAAI,IACf,SAAS,EAAC,iBAAiB,EAC3B,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,OAAO,aAEpB,CAAC,IAAI,IAAI,CACR,MAAC,WAAW,CAAC,OAAO,IAClB,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B,KAAK,KAAK,UAAU,IAAI,eAAe,EACvC,KAAK,KAAK,YAAY,IAAI,uBAAuB,CAClD,aAEA,UAAU,CAAC,MAAM,OAAG,KAAK,eACN,CACvB,EAED,KAAC,WAAW,CAAC,OAAO,IAAC,SAAS,EAAC,wBAAwB,YACpD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAC5C,KAAC,kBAAkB,IAEjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAJtC,YAAY,CAKjB,CACH,CAAC,GACkB,IACL,CACpB,CAAC;AACJ,CAAC,CAAC"}