zudoku 0.25.0 → 0.25.1

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 (82) hide show
  1. package/dist/config/validators/InputSidebarSchema.d.ts +15 -0
  2. package/dist/config/validators/InputSidebarSchema.js +1 -0
  3. package/dist/config/validators/InputSidebarSchema.js.map +1 -1
  4. package/dist/config/validators/common.d.ts +45 -34
  5. package/dist/config/validators/common.js +2 -1
  6. package/dist/config/validators/common.js.map +1 -1
  7. package/dist/config/validators/validate.d.ts +19 -14
  8. package/dist/lib/authentication/components/SignOut.js +1 -1
  9. package/dist/lib/authentication/components/SignOut.js.map +1 -1
  10. package/dist/lib/authentication/providers/clerk.js +29 -6
  11. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  12. package/dist/lib/components/navigation/SidebarBadge.d.ts +11 -1
  13. package/dist/lib/components/navigation/SidebarBadge.js +11 -2
  14. package/dist/lib/components/navigation/SidebarBadge.js.map +1 -1
  15. package/dist/lib/components/navigation/SidebarCategory.js +2 -2
  16. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  17. package/dist/lib/components/navigation/SidebarWrapper.js +1 -1
  18. package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -1
  19. package/dist/lib/oas/graphql/index.js +16 -3
  20. package/dist/lib/oas/graphql/index.js.map +1 -1
  21. package/dist/lib/oas/parser/upgrade/index.js +17 -3
  22. package/dist/lib/oas/parser/upgrade/index.js.map +1 -1
  23. package/dist/lib/plugins/openapi/CollapsibleCode.js +1 -1
  24. package/dist/lib/plugins/openapi/Endpoint.d.ts +1 -1
  25. package/dist/lib/plugins/openapi/Endpoint.js +2 -0
  26. package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
  27. package/dist/lib/plugins/openapi/ExampleDisplay.d.ts +12 -0
  28. package/dist/lib/plugins/openapi/ExampleDisplay.js +78 -0
  29. package/dist/lib/plugins/openapi/ExampleDisplay.js.map +1 -0
  30. package/dist/lib/plugins/openapi/OperationListItem.js +1 -1
  31. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  32. package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
  33. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  34. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +2 -4
  35. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +6 -13
  36. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  37. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +11 -13
  38. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  39. package/dist/lib/plugins/openapi/Sidecar.js +1 -1
  40. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  41. package/dist/lib/plugins/openapi/index.js +1 -0
  42. package/dist/lib/plugins/openapi/index.js.map +1 -1
  43. package/dist/vite/build.js +10 -8
  44. package/dist/vite/build.js.map +1 -1
  45. package/dist/vite/config.js +10 -0
  46. package/dist/vite/config.js.map +1 -1
  47. package/lib/{AuthenticationPlugin-DVLEc6cm.js → AuthenticationPlugin-D7G3me8L.js} +16 -16
  48. package/lib/AuthenticationPlugin-D7G3me8L.js.map +1 -0
  49. package/lib/{OperationList-c6V_vcgz.js → OperationList-BLdHAQ39.js} +1594 -1525
  50. package/lib/OperationList-BLdHAQ39.js.map +1 -0
  51. package/lib/assets/{worker-DV9Ecqy9.js → worker-Cbp2r2BQ.js} +26 -14
  52. package/lib/assets/{worker-DV9Ecqy9.js.map → worker-Cbp2r2BQ.js.map} +1 -1
  53. package/lib/{createServer-C4C0OO0m.js → createServer-Bf5_6o6G.js} +796 -784
  54. package/lib/{createServer-C4C0OO0m.js.map → createServer-Bf5_6o6G.js.map} +1 -1
  55. package/lib/{index-DkwDHnit.js → index-BNx95gkf.js} +5 -4
  56. package/lib/{index-DkwDHnit.js.map → index-BNx95gkf.js.map} +1 -1
  57. package/lib/zudoku.auth-clerk.js +80 -52
  58. package/lib/zudoku.auth-clerk.js.map +1 -1
  59. package/lib/zudoku.auth-openid.js +1 -1
  60. package/lib/zudoku.components.js +89 -85
  61. package/lib/zudoku.components.js.map +1 -1
  62. package/lib/zudoku.openapi-worker.js +1 -1
  63. package/lib/zudoku.plugin-openapi.js +1 -1
  64. package/package.json +4 -4
  65. package/src/lib/authentication/components/SignOut.tsx +2 -1
  66. package/src/lib/authentication/providers/clerk.tsx +38 -7
  67. package/src/lib/components/navigation/SidebarBadge.tsx +13 -1
  68. package/src/lib/components/navigation/SidebarCategory.tsx +3 -7
  69. package/src/lib/components/navigation/SidebarWrapper.tsx +1 -0
  70. package/src/lib/oas/graphql/index.ts +16 -7
  71. package/src/lib/oas/parser/upgrade/index.ts +19 -4
  72. package/src/lib/plugins/openapi/CollapsibleCode.tsx +1 -1
  73. package/src/lib/plugins/openapi/Endpoint.tsx +2 -0
  74. package/src/lib/plugins/openapi/ExampleDisplay.tsx +163 -0
  75. package/src/lib/plugins/openapi/OperationListItem.tsx +5 -3
  76. package/src/lib/plugins/openapi/ParameterListItem.tsx +1 -1
  77. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +11 -37
  78. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +49 -63
  79. package/src/lib/plugins/openapi/Sidecar.tsx +2 -4
  80. package/src/lib/plugins/openapi/index.tsx +1 -0
  81. package/lib/AuthenticationPlugin-DVLEc6cm.js.map +0 -1
  82. package/lib/OperationList-c6V_vcgz.js.map +0 -1
@@ -1,13 +1,25 @@
1
1
  import * as Tabs from "@radix-ui/react-tabs";
2
- import { SyntaxHighlight } from "../../components/SyntaxHighlight.js";
3
- import { type SchemaObject } from "../../oas/graphql/index.js";
4
2
  import { cn } from "../../util/cn.js";
5
- import { CollapsibleCode } from "./CollapsibleCode.js";
3
+ import { useSidecarExamples } from "./ExampleDisplay.js";
6
4
  import type { OperationListItemResult } from "./OperationList.js";
7
5
  import * as SidecarBox from "./SidecarBox.js";
8
- import { generateSchemaExample } from "./util/generateSchemaExample.js";
9
6
 
10
7
  type Responses = OperationListItemResult["responses"];
8
+
9
+ const ResponseContent = ({ response }: { response: Responses[number] }) => {
10
+ const { SidecarBody, SidebarFooter, hasContent } = useSidecarExamples({
11
+ content: response.content ?? [],
12
+ description: response.description ?? undefined,
13
+ });
14
+
15
+ return (
16
+ <Tabs.Content value={response.statusCode}>
17
+ <SidecarBody />
18
+ {hasContent && <SidebarFooter />}
19
+ </Tabs.Content>
20
+ );
21
+ };
22
+
11
23
  export const ResponsesSidecarBox = ({
12
24
  responses,
13
25
  selectedResponse,
@@ -16,62 +28,36 @@ export const ResponsesSidecarBox = ({
16
28
  responses: Responses;
17
29
  selectedResponse?: string;
18
30
  onSelectResponse: (response: string) => void;
19
- }) => (
20
- <SidecarBox.Root>
21
- <Tabs.Root
22
- defaultValue={responses[0]?.statusCode}
23
- value={selectedResponse}
24
- onValueChange={(value) => onSelectResponse(value)}
25
- >
26
- <SidecarBox.Head className="text-xs flex flex-col gap-2 pb-0">
27
- <span className="font-mono">Example Responses</span>
28
- <Tabs.List className="flex gap-2">
29
- {responses.map((response) => (
30
- <Tabs.Trigger
31
- key={response.statusCode}
32
- value={response.statusCode}
33
- className={cn(
34
- "text-xs font-mono px-1.5 py-1 pb-px translate-y-px border-b-2 border-transparent rounded-t cursor-pointer",
35
- "data-[state=active]:text-primary data-[state=active]:dark:text-inherit data-[state=active]:border-primary",
36
- "hover:border-accent-foreground/25",
37
- )}
38
- >
39
- {response.statusCode}
40
- </Tabs.Trigger>
41
- ))}
42
- </Tabs.List>
43
- </SidecarBox.Head>
44
- {responses.map((response) => {
45
- const firstContent = response.content?.at(0);
46
-
47
- const example =
48
- firstContent?.examples?.at(0)?.value ??
49
- (firstContent?.schema
50
- ? generateSchemaExample(firstContent.schema as SchemaObject)
51
- : "");
52
-
53
- return (
54
- <Tabs.Content key={response.statusCode} value={response.statusCode}>
55
- <SidecarBox.Body className="p-0">
56
- <CollapsibleCode>
57
- <SyntaxHighlight
58
- language={example ? "json" : "plain"}
59
- noBackground
60
- className="[--scrollbar-color:gray] text-xs max-h-[500px] p-2"
61
- code={
62
- example
63
- ? JSON.stringify(example, null, 2)
64
- : "Empty response"
65
- }
66
- />
67
- </CollapsibleCode>
68
- </SidecarBox.Body>
69
- <SidecarBox.Footer className="flex justify-end text-xs">
70
- {response.description}
71
- </SidecarBox.Footer>
72
- </Tabs.Content>
73
- );
74
- })}
75
- </Tabs.Root>
76
- </SidecarBox.Root>
77
- );
31
+ }) => {
32
+ return (
33
+ <SidecarBox.Root>
34
+ <Tabs.Root
35
+ defaultValue={responses[0]?.statusCode}
36
+ value={selectedResponse}
37
+ onValueChange={(value) => onSelectResponse(value)}
38
+ >
39
+ <SidecarBox.Head className="text-xs flex flex-col gap-2 pb-0">
40
+ <span className="font-mono">Example Responses</span>
41
+ <Tabs.List className="flex gap-2">
42
+ {responses.map((response) => (
43
+ <Tabs.Trigger
44
+ key={response.statusCode}
45
+ value={response.statusCode}
46
+ className={cn(
47
+ "text-xs font-mono px-1.5 py-1 pb-px translate-y-px border-b-2 border-transparent rounded-t cursor-pointer",
48
+ "data-[state=active]:text-primary data-[state=active]:dark:text-inherit data-[state=active]:border-primary",
49
+ "hover:border-accent-foreground/25",
50
+ )}
51
+ >
52
+ {response.statusCode}
53
+ </Tabs.Trigger>
54
+ ))}
55
+ </Tabs.List>
56
+ </SidecarBox.Head>
57
+ {responses.map((response) => (
58
+ <ResponseContent key={response.statusCode} response={response} />
59
+ ))}
60
+ </Tabs.Root>
61
+ </SidecarBox.Root>
62
+ );
63
+ };
@@ -191,10 +191,8 @@ export const Sidecar = ({
191
191
  </span>
192
192
  {isOnScreen && (
193
193
  <PlaygroundDialogWrapper
194
- server={result.data.schema.url ?? ""}
195
- servers={
196
- result.data.schema.servers.map((server) => server.url) ?? []
197
- }
194
+ server={result.data.schema.url}
195
+ servers={result.data.schema.servers.map((server) => server.url)}
198
196
  operation={operation}
199
197
  />
200
198
  )}
@@ -151,6 +151,7 @@ export const openApiPlugin = (config: OpenApiPluginOptions): ZudokuPlugin => {
151
151
  badge: {
152
152
  label: operation.method,
153
153
  color: MethodColorMap[operation.method.toLowerCase()]!,
154
+ invert: true,
154
155
  },
155
156
  })),
156
157
  }));
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthenticationPlugin-DVLEc6cm.js","sources":["../src/lib/authentication/components/SignIn.tsx","../src/lib/authentication/components/SignOut.tsx","../src/lib/authentication/components/SignUp.tsx","../src/lib/authentication/AuthenticationPlugin.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useSearchParams } from \"react-router\";\nimport { useZudoku } from \"../../components/context/ZudokuContext.js\";\n\nexport const SignIn = () => {\n const context = useZudoku();\n const [search] = useSearchParams();\n useEffect(() => {\n void context.authentication?.signIn({\n redirectTo: search.get(\"redirect\") ?? undefined,\n });\n }, [context.authentication, search]);\n\n return null;\n};\n","import { useEffect } from \"react\";\nimport { useNavigate } from \"react-router\";\nimport { useZudoku } from \"../../components/context/ZudokuContext.js\";\n\nexport const SignOut = () => {\n const context = useZudoku();\n const navigate = useNavigate();\n useEffect(() => {\n void context.authentication?.signOut().then(() => navigate(\"/\"));\n }, [navigate, context.authentication]);\n\n return null;\n};\n","import { useEffect } from \"react\";\nimport { useZudoku } from \"../../components/context/ZudokuContext.js\";\n\nexport const SignUp = () => {\n const context = useZudoku();\n useEffect(() => {\n void (context.authentication?.signUp() ?? context.authentication?.signIn());\n }, [context.authentication]);\n\n return null;\n};\n","import { LogOutIcon } from \"lucide-react\";\nimport {\n CommonPlugin,\n NavigationPlugin,\n ProfileMenuPlugin,\n} from \"../core/plugins.js\";\nimport { SignIn } from \"./components/SignIn.js\";\nimport { SignOut } from \"./components/SignOut.js\";\nimport { SignUp } from \"./components/SignUp.js\";\n\ntype PluginInterface = NavigationPlugin & CommonPlugin & ProfileMenuPlugin;\n\nexport class AuthenticationPlugin implements PluginInterface {\n getRoutes() {\n return [\n {\n path: \"/signout\",\n element: <SignOut />,\n },\n {\n path: \"/signin\",\n element: <SignIn />,\n },\n {\n path: \"/signup\",\n element: <SignUp />,\n },\n ];\n }\n\n getProfileMenuItems() {\n return [\n {\n label: \"Logout\",\n path: \"/signout\",\n category: \"bottom\",\n icon: LogOutIcon,\n } as const,\n ];\n }\n}\n"],"names":["SignIn","context","useZudoku","search","useSearchParams","useEffect","_a","SignOut","navigate","useNavigate","SignUp","_b","AuthenticationPlugin","LogOutIcon"],"mappings":";;;;;AAIO,MAAMA,IAAS,MAAM;AAC1B,QAAMC,IAAUC,EAAU,GACpB,CAACC,CAAM,IAAIC,EAAgB;AACjC,SAAAC,EAAU,MAAM;;AACT,KAAAC,IAAAL,EAAQ,mBAAR,QAAAK,EAAwB,OAAO;AAAA,MAClC,YAAYH,EAAO,IAAI,UAAU,KAAK;AAAA,IAAA;AAAA,EAEvC,GAAA,CAACF,EAAQ,gBAAgBE,CAAM,CAAC,GAE5B;AACT,GCVaI,IAAU,MAAM;AAC3B,QAAMN,IAAUC,EAAU,GACpBM,IAAWC,EAAY;AAC7B,SAAAJ,EAAU,MAAM;;AACT,KAAAC,IAAAL,EAAQ,mBAAR,QAAAK,EAAwB,UAAU,KAAK,MAAME,EAAS,GAAG;AAAA,EAC7D,GAAA,CAACA,GAAUP,EAAQ,cAAc,CAAC,GAE9B;AACT,GCTaS,IAAS,MAAM;AAC1B,QAAMT,IAAUC,EAAU;AAC1B,SAAAG,EAAU,MAAM;;AACd,MAAMC,IAAAL,EAAQ,mBAAR,gBAAAK,EAAwB,eAAYK,IAAAV,EAAQ,mBAAR,QAAAU,EAAwB;AAAA,EAAO,GACxE,CAACV,EAAQ,cAAc,CAAC,GAEpB;AACT;ACEO,MAAMW,EAAgD;AAAA,EAC3D,YAAY;AACH,WAAA;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,+BAAUL,GAAQ,CAAA,CAAA;AAAA,MACpB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,+BAAUP,GAAO,CAAA,CAAA;AAAA,MACnB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,+BAAUU,GAAO,CAAA,CAAA;AAAA,MAAA;AAAA,IAErB;AAAA,EAAA;AAAA,EAGF,sBAAsB;AACb,WAAA;AAAA,MACL;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,QACN,UAAU;AAAA,QACV,MAAMG;AAAA,MAAA;AAAA,IAEV;AAAA,EAAA;AAEJ;"}