zudoku 0.3.0-dev.55 → 0.3.0-dev.57

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 (181) hide show
  1. package/dist/app/demo.js +6 -1
  2. package/dist/app/demo.js.map +1 -1
  3. package/dist/app/entry.client.d.ts +1 -1
  4. package/dist/app/entry.client.js +1 -1
  5. package/dist/app/entry.client.js.map +1 -1
  6. package/dist/app/entry.server.d.ts +1 -1
  7. package/dist/app/entry.server.js +1 -1
  8. package/dist/app/entry.server.js.map +1 -1
  9. package/dist/app/main.d.ts +1 -1
  10. package/dist/app/main.js +9 -2
  11. package/dist/app/main.js.map +1 -1
  12. package/dist/app/standalone.js +6 -1
  13. package/dist/app/standalone.js.map +1 -1
  14. package/dist/config/validators/validate.d.ts +77 -17
  15. package/dist/config/validators/validate.js +7 -1
  16. package/dist/config/validators/validate.js.map +1 -1
  17. package/dist/lib/components/DeveloperHint.d.ts +5 -0
  18. package/dist/lib/components/DeveloperHint.js +10 -0
  19. package/dist/lib/components/DeveloperHint.js.map +1 -0
  20. package/dist/lib/components/Header.js +1 -1
  21. package/dist/lib/components/Header.js.map +1 -1
  22. package/dist/lib/components/NotFoundPage.js +2 -2
  23. package/dist/lib/components/NotFoundPage.js.map +1 -1
  24. package/dist/lib/components/navigation/SideNavigationCategory.js +2 -2
  25. package/dist/lib/components/navigation/SideNavigationCategory.js.map +1 -1
  26. package/dist/lib/core/DevPortalContext.d.ts +8 -1
  27. package/dist/lib/core/DevPortalContext.js.map +1 -1
  28. package/dist/lib/oas/graphql/index.js +5 -3
  29. package/dist/lib/oas/graphql/index.js.map +1 -1
  30. package/dist/lib/plugins/api-keys/ProtectedRoute.d.ts +1 -0
  31. package/dist/lib/plugins/api-keys/ProtectedRoute.js +14 -0
  32. package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -0
  33. package/dist/lib/plugins/api-keys/index.js +2 -12
  34. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  35. package/dist/lib/plugins/openapi/OperationList.js +4 -3
  36. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  37. package/dist/lib/plugins/openapi/StaggeredRender.d.ts +5 -0
  38. package/dist/lib/plugins/openapi/StaggeredRender.js +13 -0
  39. package/dist/lib/plugins/openapi/StaggeredRender.js.map +1 -0
  40. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -3
  41. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  42. package/dist/vite/plugin-custom-css.js +2 -3
  43. package/dist/vite/plugin-custom-css.js.map +1 -1
  44. package/lib/AnchorLink-GNsUeGSX.js +705 -0
  45. package/lib/{AnchorLink-BaXHjhF-.js.map → AnchorLink-GNsUeGSX.js.map} +1 -1
  46. package/lib/Button-DpHMZvVs.js +4571 -0
  47. package/lib/Button-DpHMZvVs.js.map +1 -0
  48. package/lib/DevPortalProvider-Do9oJqme.js +1081 -0
  49. package/lib/{DevPortalProvider-GjdO0Xr-.js.map → DevPortalProvider-Do9oJqme.js.map} +1 -1
  50. package/lib/Markdown-DtLFdxD1.js +15031 -0
  51. package/lib/Markdown-DtLFdxD1.js.map +1 -0
  52. package/lib/MdxPage-CbwYRKf5.js +190 -0
  53. package/lib/{MdxPage-Dlujuj-J.js.map → MdxPage-CbwYRKf5.js.map} +1 -1
  54. package/lib/OperationList-DypxLtSC.js +5578 -0
  55. package/lib/OperationList-DypxLtSC.js.map +1 -0
  56. package/lib/Route-C1LyvITr.js +13 -0
  57. package/lib/{Route-CR6TEwVC.js.map → Route-C1LyvITr.js.map} +1 -1
  58. package/lib/Spinner-Bhbs5aPI.js +182 -0
  59. package/lib/Spinner-Bhbs5aPI.js.map +1 -0
  60. package/lib/_commonjsHelpers-BVfed4GL.js +29 -0
  61. package/lib/_commonjsHelpers-BVfed4GL.js.map +1 -0
  62. package/lib/assets/index-BPdJm2ty.js +4765 -0
  63. package/lib/assets/{index-CpIig0AX.js.map → index-BPdJm2ty.js.map} +1 -1
  64. package/lib/assets/worker-BWwCA-wk.js +14900 -0
  65. package/lib/assets/{worker-B5k2aBV9.js.map → worker-BWwCA-wk.js.map} +1 -1
  66. package/lib/context-_fYfJFgk.js +14 -0
  67. package/lib/{context-BoN_3uxi.js.map → context-_fYfJFgk.js.map} +1 -1
  68. package/lib/hook-Biq3zYel.js +92 -0
  69. package/lib/hook-Biq3zYel.js.map +1 -0
  70. package/lib/{index-Dih8IAqw.js → index-Bg82-bqR.js} +83 -103
  71. package/lib/{index-Dih8IAqw.js.map → index-Bg82-bqR.js.map} +1 -1
  72. package/lib/index-gsAuUwQh.js +418 -0
  73. package/lib/index-gsAuUwQh.js.map +1 -0
  74. package/lib/index-pI9JkN46.js +4765 -0
  75. package/lib/{index-Bn03IPZt.js.map → index-pI9JkN46.js.map} +1 -1
  76. package/lib/jsx-runtime-CJZJivg2.js +1526 -0
  77. package/lib/{jsx-runtime-DvZ6OKMM.js.map → jsx-runtime-CJZJivg2.js.map} +1 -1
  78. package/lib/prism-bash.min-DadFsM4Z.js +7 -0
  79. package/lib/{prism-bash.min-BtBk0onv.js.map → prism-bash.min-DadFsM4Z.js.map} +1 -1
  80. package/lib/prism-csharp.min-Yizuc34Y.js +35 -0
  81. package/lib/{prism-csharp.min-Cv7D49bv.js.map → prism-csharp.min-Yizuc34Y.js.map} +1 -1
  82. package/lib/prism-java.min-d5iT_mOd.js +7 -0
  83. package/lib/{prism-java.min-tNK-JX6x.js.map → prism-java.min-d5iT_mOd.js.map} +1 -1
  84. package/lib/prism-json.min-B1GJqK1k.js +2 -0
  85. package/lib/{prism-json.min-Cdtv-CME.js.map → prism-json.min-B1GJqK1k.js.map} +1 -1
  86. package/lib/prism-markup-templating-DZrrEs0A.js +62 -0
  87. package/lib/{prism-markup-templating-iotg2sCU.js.map → prism-markup-templating-DZrrEs0A.js.map} +1 -1
  88. package/lib/prism-objectivec.min-BXSWqpJJ.js +2 -0
  89. package/lib/{prism-objectivec.min-CY4WGixz.js.map → prism-objectivec.min-BXSWqpJJ.js.map} +1 -1
  90. package/lib/prism-php.min-o7FpoMP_.js +11 -0
  91. package/lib/{prism-php.min-T6sIVgED.js.map → prism-php.min-o7FpoMP_.js.map} +1 -1
  92. package/lib/prism-ruby.min-C7LwcKyz.js +10 -0
  93. package/lib/{prism-ruby.min-B-2KAa4y.js.map → prism-ruby.min-C7LwcKyz.js.map} +1 -1
  94. package/lib/router-CBw2vqJE.js +2973 -0
  95. package/lib/{router-ButO1QyY.js.map → router-CBw2vqJE.js.map} +1 -1
  96. package/lib/slugify-CiPVjteN.js +28 -0
  97. package/lib/{slugify-CmS97Vy8.js.map → slugify-CiPVjteN.js.map} +1 -1
  98. package/lib/state-DKdaQzvh.js +288 -0
  99. package/lib/{state-CmGfNKhR.js.map → state-DKdaQzvh.js.map} +1 -1
  100. package/lib/urql-DMlBWUKL.js +1592 -0
  101. package/lib/{urql-DtVKPBx_.js.map → urql-DMlBWUKL.js.map} +1 -1
  102. package/lib/util-_jwUlTBU.js +41 -0
  103. package/lib/{util-B5KX4h4M.js.map → util-_jwUlTBU.js.map} +1 -1
  104. package/lib/zudoku.auth-auth0.js +18 -24
  105. package/lib/zudoku.auth-auth0.js.map +1 -1
  106. package/lib/zudoku.auth-clerk.js +34 -43
  107. package/lib/zudoku.auth-clerk.js.map +1 -1
  108. package/lib/zudoku.auth-openid.js +734 -1121
  109. package/lib/zudoku.auth-openid.js.map +1 -1
  110. package/lib/zudoku.components.js +830 -1076
  111. package/lib/zudoku.components.js.map +1 -1
  112. package/lib/zudoku.openapi-worker.js +9689 -13781
  113. package/lib/zudoku.openapi-worker.js.map +1 -1
  114. package/lib/zudoku.plugin-api-keys.js +171 -208
  115. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  116. package/lib/zudoku.plugin-markdown.js +33 -41
  117. package/lib/zudoku.plugin-markdown.js.map +1 -1
  118. package/lib/zudoku.plugin-openapi.js +6 -6
  119. package/lib/zudoku.plugin-redirect.js +8 -10
  120. package/lib/zudoku.plugin-redirect.js.map +1 -1
  121. package/package.json +2 -2
  122. package/src/app/demo.tsx +6 -1
  123. package/src/app/entry.client.tsx +1 -1
  124. package/src/app/entry.server.tsx +1 -1
  125. package/src/app/main.tsx +11 -2
  126. package/src/app/standalone.tsx +6 -1
  127. package/src/lib/components/DeveloperHint.tsx +25 -0
  128. package/src/lib/components/Header.tsx +6 -1
  129. package/src/lib/components/NotFoundPage.tsx +8 -14
  130. package/src/lib/components/navigation/SideNavigationCategory.tsx +3 -3
  131. package/src/lib/core/DevPortalContext.ts +8 -1
  132. package/src/lib/oas/graphql/index.ts +7 -3
  133. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +29 -0
  134. package/src/lib/plugins/api-keys/index.tsx +2 -21
  135. package/src/lib/plugins/openapi/OperationList.tsx +14 -14
  136. package/src/lib/plugins/openapi/StaggeredRender.tsx +17 -0
  137. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +3 -5
  138. package/lib/AnchorLink-BaXHjhF-.js +0 -989
  139. package/lib/Combination-BfufJFkX.js +0 -1365
  140. package/lib/Combination-BfufJFkX.js.map +0 -1
  141. package/lib/DevPortalProvider-GjdO0Xr-.js +0 -1610
  142. package/lib/Markdown-B8nPVql1.js +0 -19708
  143. package/lib/Markdown-B8nPVql1.js.map +0 -1
  144. package/lib/MdxPage-Dlujuj-J.js +0 -223
  145. package/lib/OperationList-krPgt6sE.js +0 -8041
  146. package/lib/OperationList-krPgt6sE.js.map +0 -1
  147. package/lib/Playground-DOHxca0P.js +0 -539
  148. package/lib/Playground-DOHxca0P.js.map +0 -1
  149. package/lib/Route-CR6TEwVC.js +0 -13
  150. package/lib/Select-Boi_pe3L.js +0 -5298
  151. package/lib/Select-Boi_pe3L.js.map +0 -1
  152. package/lib/Spinner-oU0QJmi_.js +0 -16
  153. package/lib/Spinner-oU0QJmi_.js.map +0 -1
  154. package/lib/_commonjsHelpers-BxmBWJD2.js +0 -34
  155. package/lib/_commonjsHelpers-BxmBWJD2.js.map +0 -1
  156. package/lib/assets/index-CpIig0AX.js +0 -6341
  157. package/lib/assets/worker-B5k2aBV9.js +0 -18921
  158. package/lib/context-BoN_3uxi.js +0 -17
  159. package/lib/hook-CIuFuyBT.js +0 -90
  160. package/lib/hook-CIuFuyBT.js.map +0 -1
  161. package/lib/index-BL1P4Gqq.js +0 -280
  162. package/lib/index-BL1P4Gqq.js.map +0 -1
  163. package/lib/index-Bn03IPZt.js +0 -6341
  164. package/lib/index-FprhHF51.js +0 -253
  165. package/lib/index-FprhHF51.js.map +0 -1
  166. package/lib/jsx-runtime-DvZ6OKMM.js +0 -2110
  167. package/lib/mutation-DWY9x2Uc.js +0 -250
  168. package/lib/mutation-DWY9x2Uc.js.map +0 -1
  169. package/lib/prism-bash.min-BtBk0onv.js +0 -7
  170. package/lib/prism-csharp.min-Cv7D49bv.js +0 -30
  171. package/lib/prism-java.min-tNK-JX6x.js +0 -7
  172. package/lib/prism-json.min-Cdtv-CME.js +0 -2
  173. package/lib/prism-markup-templating-iotg2sCU.js +0 -94
  174. package/lib/prism-objectivec.min-CY4WGixz.js +0 -2
  175. package/lib/prism-php.min-T6sIVgED.js +0 -11
  176. package/lib/prism-ruby.min-B-2KAa4y.js +0 -8
  177. package/lib/router-ButO1QyY.js +0 -4062
  178. package/lib/slugify-CmS97Vy8.js +0 -50
  179. package/lib/state-CmGfNKhR.js +0 -436
  180. package/lib/urql-DtVKPBx_.js +0 -2567
  181. package/lib/util-B5KX4h4M.js +0 -55
@@ -1,539 +0,0 @@
1
- import { j as jsxRuntimeExports } from "./jsx-runtime-DvZ6OKMM.js";
2
- import { g as useFieldArray, h as useWatch, i as useFormContext, C as Controller, u as useForm, a as useMutation, F as FormProvider, S as Select, b as SelectTrigger, c as SelectValue, d as SelectContent, f as SelectItem } from "./Select-Boi_pe3L.js";
3
- import * as React from "react";
4
- import { forwardRef, Fragment } from "react";
5
- import { a as useQuery } from "./urql-DtVKPBx_.js";
6
- import { v as useApiIdentities } from "./DevPortalProvider-GjdO0Xr-.js";
7
- import { S as Spinner } from "./Spinner-oU0QJmi_.js";
8
- import { e as cn, j as TriangleAlert, S as SyntaxHighlight } from "./Markdown-B8nPVql1.js";
9
- import { B as Button } from "./Combination-BfufJFkX.js";
10
- import { X, u as usePastellizedColor, D as DATA_ATTR, C as ColorizedParam, T as Tabs, a as TabsList, b as TabsTrigger, c as TabsContent } from "./OperationList-krPgt6sE.js";
11
- import { u as useOasConfig } from "./context-BoN_3uxi.js";
12
- import { g as graphql } from "./index-Dih8IAqw.js";
13
- import { S as Slot } from "./index-BL1P4Gqq.js";
14
- const Card = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsx(
15
- "div",
16
- {
17
- ref,
18
- className: cn(
19
- "rounded-xl border border-border bg-card text-card-foreground shadow",
20
- className
21
- ),
22
- ...props
23
- }
24
- ));
25
- Card.displayName = "Card";
26
- const CardHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsx(
27
- "div",
28
- {
29
- ref,
30
- className: cn("flex flex-col space-y-1.5 p-6", className),
31
- ...props
32
- }
33
- ));
34
- CardHeader.displayName = "CardHeader";
35
- const CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsx(
36
- "h3",
37
- {
38
- ref,
39
- className: cn("font-semibold leading-none tracking-tight", className),
40
- ...props
41
- }
42
- ));
43
- CardTitle.displayName = "CardTitle";
44
- const CardDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsx(
45
- "p",
46
- {
47
- ref,
48
- className: cn("text-sm text-muted-foreground", className),
49
- ...props
50
- }
51
- ));
52
- CardDescription.displayName = "CardDescription";
53
- const CardContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
54
- CardContent.displayName = "CardContent";
55
- const CardFooter = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsx(
56
- "div",
57
- {
58
- ref,
59
- className: cn("flex items-center p-6 pt-0", className),
60
- ...props
61
- }
62
- ));
63
- CardFooter.displayName = "CardFooter";
64
- const createUrl = (host, path, data) => {
65
- const url = new URL(
66
- host + path.split("/").map(
67
- (v) => {
68
- var _a;
69
- return v.startsWith("{") && v.endsWith("}") ? ((_a = data.pathParams.find((part) => part.name === v.slice(1, -1))) == null ? void 0 : _a.value) ?? v : v;
70
- }
71
- ).join("/")
72
- );
73
- data.queryParams.forEach((param) => {
74
- url.searchParams.set(param.name, param.value);
75
- });
76
- return url;
77
- };
78
- const createVariantComponent = (tag, cvx) => {
79
- const MyVariant = React.forwardRef(({ className, asChild, ...props }, ref) => {
80
- const Comp = asChild ? Slot : tag;
81
- return React.createElement(Comp, {
82
- ...props,
83
- ref,
84
- className: cn(cvx, className)
85
- });
86
- });
87
- MyVariant.displayName = `VariantComponent(${tag})`;
88
- return MyVariant;
89
- };
90
- const InlineInput = createVariantComponent(
91
- "input",
92
- "px-2 bg-transparent h-6 font-mono text-xs m-2"
93
- );
94
- const Headers = ({
95
- control,
96
- register
97
- }) => {
98
- const { fields, append, remove } = useFieldArray({
99
- control,
100
- name: "headers"
101
- });
102
- const selectedIdentity = useWatch({ name: "identity", control });
103
- const liveHeaders = useWatch({ name: "headers", control });
104
- const disableAuth = selectedIdentity !== NO_IDENTITY;
105
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto]", children: [
106
- fields.map((header, i) => {
107
- var _a;
108
- const isDisabledByAuth = disableAuth && ((_a = liveHeaders.at(i)) == null ? void 0 : _a.name) === "Authorization";
109
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
110
- "div",
111
- {
112
- className: cn(
113
- "grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-muted rounded overflow-hidden group",
114
- isDisabledByAuth && "line-through"
115
- ),
116
- title: isDisabledByAuth ? "This header is disabled because authentication was selected" : void 0,
117
- children: [
118
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2 items-center", children: [
119
- /* @__PURE__ */ jsxRuntimeExports.jsx(
120
- InlineInput,
121
- {
122
- ...register(`headers.${i}.name`),
123
- placeholder: "Name",
124
- className: "peer",
125
- autoComplete: "off"
126
- }
127
- ),
128
- isDisabledByAuth && /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { size: 16, className: "text-amber-500" })
129
- ] }),
130
- /* @__PURE__ */ jsxRuntimeExports.jsx(
131
- InlineInput,
132
- {
133
- placeholder: "Value",
134
- className: "peer",
135
- ...register(`headers.${i}.value`),
136
- autoComplete: "off"
137
- }
138
- ),
139
- /* @__PURE__ */ jsxRuntimeExports.jsx(
140
- "button",
141
- {
142
- className: "hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible",
143
- onClick: () => {
144
- remove(i);
145
- },
146
- type: "button",
147
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(X, { size: 16 })
148
- }
149
- ),
150
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col-span-full border-b border-border" })
151
- ]
152
- },
153
- header.id
154
- );
155
- }),
156
- /* @__PURE__ */ jsxRuntimeExports.jsx(
157
- Button,
158
- {
159
- className: "col-span-full mt-4",
160
- onClick: () => append({ name: "", value: "" }),
161
- type: "button",
162
- children: "Add header"
163
- }
164
- )
165
- ] });
166
- };
167
- const ParameterValue = forwardRef(
168
- function ParameterValue2({ part, className, ...props }, ref) {
169
- const color = usePastellizedColor(part);
170
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
171
- InlineInput,
172
- {
173
- ...props,
174
- ref,
175
- className: cn(className, "opacity-80 data-[active=true]:opacity-100"),
176
- style: {
177
- // color: `hsl(${color})`,
178
- outlineColor: `hsl(${color})`
179
- }
180
- }
181
- );
182
- }
183
- );
184
- const PathParams = ({
185
- control,
186
- register
187
- }) => {
188
- const { fields } = useFieldArray({
189
- control,
190
- name: "pathParams"
191
- });
192
- return fields.map((part, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
193
- "div",
194
- {
195
- className: "grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-muted rounded overflow-hidden group",
196
- children: [
197
- /* @__PURE__ */ jsxRuntimeExports.jsx(
198
- InlineInput,
199
- {
200
- ...register(`pathParams.${i}.name`),
201
- disabled: true,
202
- placeholder: "Name",
203
- className: "peer"
204
- }
205
- ),
206
- /* @__PURE__ */ jsxRuntimeExports.jsx(
207
- ParameterValue,
208
- {
209
- ...register(`pathParams.${i}.value`),
210
- part: part.name,
211
- ...{ [DATA_ATTR]: part.name },
212
- placeholder: "Value",
213
- className: "peer"
214
- }
215
- ),
216
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col-span-full border-b border-border" })
217
- ]
218
- },
219
- part.id
220
- ));
221
- };
222
- const QueryParams = ({
223
- control
224
- }) => {
225
- const { fields } = useFieldArray({
226
- control,
227
- name: "queryParams"
228
- });
229
- const form = useFormContext();
230
- const requiredFields = form.getValues(`queryParams`).map((param) => param.isRequired);
231
- return fields.map((field, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
232
- "div",
233
- {
234
- className: "px-2 grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-accent rounded overflow-hidden group",
235
- children: [
236
- /* @__PURE__ */ jsxRuntimeExports.jsx(
237
- Controller,
238
- {
239
- control,
240
- name: `queryParams.${i}.active`,
241
- render: ({ field: field2 }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
242
- "input",
243
- {
244
- type: "checkbox",
245
- id: `queryParams.${i}.active`,
246
- checked: field2.value,
247
- onChange: field2.onChange
248
- }
249
- )
250
- }
251
- ),
252
- /* @__PURE__ */ jsxRuntimeExports.jsx(
253
- Controller,
254
- {
255
- control,
256
- render: ({ field: field2 }) => {
257
- return /* @__PURE__ */ jsxRuntimeExports.jsx(InlineInput, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
258
- "label",
259
- {
260
- className: "flex items-center",
261
- htmlFor: `queryParams.${i}.active`,
262
- title: requiredFields[i] ? "Required field" : void 0,
263
- children: [
264
- field2.value,
265
- requiredFields[i] && /* @__PURE__ */ jsxRuntimeExports.jsx("sup", { className: "text-destructive", children: "*" })
266
- ]
267
- }
268
- ) });
269
- },
270
- name: `queryParams.${i}.name`
271
- }
272
- ),
273
- /* @__PURE__ */ jsxRuntimeExports.jsx(
274
- Controller,
275
- {
276
- control,
277
- render: ({ field: field2 }) => {
278
- return /* @__PURE__ */ jsxRuntimeExports.jsx(InlineInput, { ...field2, placeholder: "Value", className: "peer" });
279
- },
280
- name: `queryParams.${i}.value`
281
- }
282
- ),
283
- /* @__PURE__ */ jsxRuntimeExports.jsx(
284
- Controller,
285
- {
286
- control,
287
- render: ({ field: field2 }) => {
288
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
289
- "button",
290
- {
291
- type: "button",
292
- className: cn(
293
- "hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible",
294
- field2.value.length === 0 && "opacity-0 pointer-events-none"
295
- ),
296
- onClick: () => field2.onChange(""),
297
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(X, { size: 16 })
298
- }
299
- );
300
- },
301
- name: `queryParams.${i}.value`
302
- }
303
- ),
304
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "-mx-2 col-span-full border-b border-border" })
305
- ]
306
- },
307
- field.id
308
- ));
309
- };
310
- const NO_IDENTITY = "__none";
311
- const GetServerQuery = graphql(
312
- /* GraphQL */
313
- `
314
- query getServerQuery($input: JSON!, $type: SchemaType!) {
315
- schema(input: $input, type: $type) {
316
- url
317
- }
318
- }
319
- `
320
- );
321
- function mimeTypeToLanguage(mimeType) {
322
- var _a;
323
- const mimeTypeMapping = {
324
- "application/json": "json",
325
- "text/json": "json",
326
- "text/html": "html",
327
- "text/css": "css",
328
- "text/javascript": "javascript",
329
- "application/xml": "xml",
330
- "application/xhtml+xml": "xhtml",
331
- "text/plain": "plain"
332
- };
333
- return (_a = Object.entries(mimeTypeMapping).find(
334
- ([mime]) => mimeType.includes(mime)
335
- )) == null ? void 0 : _a[0][1];
336
- }
337
- const statusCodeMap = {
338
- 200: "OK",
339
- 201: "Created",
340
- 202: "Accepted",
341
- 204: "No Content",
342
- 400: "Bad Request",
343
- 401: "Unauthorized",
344
- 403: "Forbidden",
345
- 404: "Not Found",
346
- 405: "Method Not Allowed",
347
- 500: "Internal Server Error"
348
- };
349
- const Playground = ({
350
- url,
351
- method,
352
- headers = [{ name: "", value: "" }],
353
- queryParams = [],
354
- pathParams = [],
355
- hasParams
356
- }) => {
357
- var _a, _b, _c;
358
- const variables = useOasConfig();
359
- const [server] = useQuery({ query: GetServerQuery, variables });
360
- const { register, control, handleSubmit, watch, ...form } = useForm({
361
- defaultValues: {
362
- body: "",
363
- queryParams,
364
- headers,
365
- pathParams,
366
- identity: NO_IDENTITY
367
- }
368
- });
369
- const formState = watch();
370
- const identities = useApiIdentities();
371
- const queryMutation = useMutation({
372
- mutationFn: async (data) => {
373
- var _a2, _b2, _c2;
374
- const requestUrl = createUrl(((_a2 = server.data) == null ? void 0 : _a2.schema.url) ?? "", url, data);
375
- const start = performance.now();
376
- const request = new Request(requestUrl, {
377
- method: method.toUpperCase(),
378
- headers: Object.fromEntries(
379
- data.headers.filter((h) => h.name).map((header) => [header.name, header.value])
380
- )
381
- });
382
- if (data.identity !== NO_IDENTITY) {
383
- (_c2 = (_b2 = identities.data) == null ? void 0 : _b2.find((i) => i.id === data.identity)) == null ? void 0 : _c2.authorizeRequest(request);
384
- }
385
- const response = await fetch(request);
386
- const body = await response.text();
387
- return {
388
- status: response.status,
389
- headers: response.headers,
390
- size: body.length,
391
- body,
392
- time: performance.now() - start
393
- };
394
- }
395
- });
396
- const path = url.split("/").map((part, i, arr) => {
397
- var _a2;
398
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Fragment, { children: [
399
- part.startsWith("{") && part.endsWith("}") ? /* @__PURE__ */ jsxRuntimeExports.jsx(
400
- ColorizedParam,
401
- {
402
- name: part,
403
- backgroundOpacity: "0",
404
- slug: part.slice(1, -1),
405
- children: (_a2 = formState.pathParams.find((p) => p.name === part.slice(1, -1))) == null ? void 0 : _a2.value
406
- }
407
- ) : part,
408
- i < arr.length - 1 && "/",
409
- /* @__PURE__ */ jsxRuntimeExports.jsx("wbr", {})
410
- ] }, part);
411
- });
412
- const lang = mimeTypeToLanguage(
413
- ((_a = queryMutation.data) == null ? void 0 : _a.headers.get("Content-Type")) ?? ""
414
- );
415
- const headerEntries = Array.from(((_b = queryMutation.data) == null ? void 0 : _b.headers.entries()) ?? []);
416
- const urlQueryParams = formState.queryParams.filter((p) => p.active).map((p) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Fragment, { children: [
417
- p.name,
418
- "=",
419
- p.value,
420
- /* @__PURE__ */ jsxRuntimeExports.jsx("wbr", {})
421
- ] }, p.name));
422
- return /* @__PURE__ */ jsxRuntimeExports.jsx(FormProvider, { ...{ register, control, handleSubmit, watch, ...form }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("form", { onSubmit: handleSubmit((data) => queryMutation.mutateAsync(data)), children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-2 text-sm h-full", children: [
423
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-4 p-8 bg-muted/50 after:bg-muted-foreground/20 relative after:absolute after:w-px after:inset-0 after:left-auto", children: [
424
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2 items-stretch", children: [
425
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-1 items-center w-full border rounded-md border-border", children: [
426
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-r border-border p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono", children: method.toUpperCase() }),
427
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-2 font-mono text-xs", children: [
428
- path,
429
- urlQueryParams.length > 0 ? "?" : "",
430
- urlQueryParams
431
- ] })
432
- ] }),
433
- /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "submit", className: "h-auto flex gap-1", children: "Send" })
434
- ] }),
435
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs, { defaultValue: hasParams ? "parameters" : "headers", children: [
436
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between", children: [
437
- /* @__PURE__ */ jsxRuntimeExports.jsxs(TabsList, { children: [
438
- hasParams && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { value: "parameters", children: "Parameters" }),
439
- /* @__PURE__ */ jsxRuntimeExports.jsxs(TabsTrigger, { value: "headers", children: [
440
- "Headers",
441
- " ",
442
- formState.headers.length > 0 && `(${formState.headers.length})`
443
- ] }),
444
- /* @__PURE__ */ jsxRuntimeExports.jsx(
445
- TabsTrigger,
446
- {
447
- value: "body",
448
- disabled: ["POST", "PUT", "PATCH", "DELETE"].includes(
449
- method.toUpperCase()
450
- ),
451
- children: "Body"
452
- }
453
- )
454
- ] }),
455
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2 items-center", children: [
456
- "Auth:",
457
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
458
- Select,
459
- {
460
- onValueChange: (value) => form.setValue("identity", value),
461
- defaultValue: formState.identity,
462
- children: [
463
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "w-[180px] flex", children: identities.isPending ? /* @__PURE__ */ jsxRuntimeExports.jsx(Spinner, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, {}) }),
464
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { align: "center", children: [
465
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: NO_IDENTITY, children: "None" }),
466
- (_c = identities.data) == null ? void 0 : _c.map((identity) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: identity.id, children: identity.label }, identity.id))
467
- ] })
468
- ]
469
- }
470
- )
471
- ] })
472
- ] }),
473
- /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "headers", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Headers, { control, register }) }),
474
- /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "parameters", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-[min-content_1fr_1fr_auto]", children: [
475
- pathParams.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold my-3 col-span-3", children: "Path Parameters" }),
476
- /* @__PURE__ */ jsxRuntimeExports.jsx(PathParams, { control, register }),
477
- queryParams.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold my-3 col-span-3", children: "Query Parameters" }),
478
- /* @__PURE__ */ jsxRuntimeExports.jsx(QueryParams, { control })
479
- ] }) }),
480
- /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "body", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
481
- "textarea",
482
- {
483
- ...register("body"),
484
- className: "border border-border w-full rounded p-2 bg-muted h-40"
485
- }
486
- ) })
487
- ] })
488
- ] }),
489
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-4 p-8 bg-muted/70", children: queryMutation.error ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: queryMutation.error.message }) : queryMutation.data ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [
490
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex gap-2", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex text-xs gap-6", children: [
491
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
492
- "Status: ",
493
- queryMutation.data.status,
494
- " ",
495
- statusCodeMap[queryMutation.data.status] ?? ""
496
- ] }),
497
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
498
- "Time: ",
499
- queryMutation.data.time.toFixed(0),
500
- "ms"
501
- ] }),
502
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
503
- "Size: ",
504
- queryMutation.data.size,
505
- " B"
506
- ] })
507
- ] }) }),
508
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs, { defaultValue: "response", children: [
509
- /* @__PURE__ */ jsxRuntimeExports.jsxs(TabsList, { children: [
510
- /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { value: "response", children: "Response" }),
511
- /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { value: "headers", children: headerEntries.length ? `Headers (${headerEntries.length})` : "No headers" })
512
- ] }),
513
- /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "response", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Card, { className: "shadow-none p-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
514
- SyntaxHighlight,
515
- {
516
- language: lang ?? "json",
517
- noBackground: true,
518
- className: "overflow-x-auto ",
519
- code: queryMutation.data.body ?? JSON.stringify("")
520
- }
521
- ) }) }),
522
- /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "headers", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Card, { className: "grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4", children: [
523
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold", children: "Key" }),
524
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold", children: "Value" }),
525
- headerEntries.map(([key, value]) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Fragment, { children: [
526
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: key }),
527
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: value })
528
- ] }, key))
529
- ] }) })
530
- ] })
531
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid place-items-center h-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[16px] font-semibold text-muted-foreground", children: queryMutation.isPending ? /* @__PURE__ */ jsxRuntimeExports.jsx(Spinner, {}) : "Send a request first to see the response here" }) }) })
532
- ] }) }) });
533
- };
534
- export {
535
- NO_IDENTITY,
536
- Playground,
537
- Playground as default
538
- };
539
- //# sourceMappingURL=Playground-DOHxca0P.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Playground-DOHxca0P.js","sources":["../src/lib/ui/Card.tsx","../src/lib/plugins/openapi/playground/createUrl.ts","../src/lib/util/createVariantComponent.tsx","../src/lib/plugins/openapi/playground/InlineInput.tsx","../src/lib/plugins/openapi/playground/Headers.tsx","../src/lib/plugins/openapi/playground/PathParams.tsx","../src/lib/plugins/openapi/playground/QueryParams.tsx","../src/lib/plugins/openapi/playground/Playground.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border border-border bg-card text-card-foreground shadow\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import type { PlaygroundForm } from \"./Playground.js\";\n\nexport const createUrl = (host: string, path: string, data: PlaygroundForm) => {\n const url = new URL(\n host +\n path\n .split(\"/\")\n .map((v) =>\n v.startsWith(\"{\") && v.endsWith(\"}\")\n ? data.pathParams.find((part) => part.name === v.slice(1, -1))\n ?.value ?? v\n : v,\n )\n .join(\"/\"),\n );\n\n data.queryParams.forEach((param) => {\n url.searchParams.set(param.name, param.value);\n });\n\n return url;\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport type { ClassValue } from \"clsx\";\nimport * as React from \"react\";\nimport type { JSX } from \"react/jsx-runtime\";\nimport { cn } from \"./cn.js\";\n\nconst createVariantComponent = <\n E extends keyof React.ReactHTML,\n C extends ReturnType<typeof cva>,\n>(\n tag: E,\n cvx: ClassValue | C,\n // variantProps: Array<keyof VariantProps<C>> = [],\n) => {\n const MyVariant = React.forwardRef<\n HTMLElement,\n JSX.IntrinsicElements[E] & { className?: ClassValue; asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : tag;\n\n return React.createElement(Comp, {\n ...props,\n ref,\n className:\n typeof cvx === \"function\" ? cvx({ className }) : cn(cvx, className),\n });\n });\n\n MyVariant.displayName = `VariantComponent(${tag})`;\n\n return MyVariant;\n};\n\nexport default createVariantComponent;\n","import createVariantComponent from \"../../../util/createVariantComponent.js\";\n\nexport const InlineInput = createVariantComponent(\n \"input\",\n \"px-2 bg-transparent h-6 font-mono text-xs m-2\",\n);\n","import { TriangleAlertIcon, XIcon } from \"lucide-react\";\nimport {\n Control,\n useFieldArray,\n UseFormRegister,\n useWatch,\n} from \"react-hook-form\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport { NO_IDENTITY, type PlaygroundForm } from \"./Playground.js\";\n\nexport const Headers = ({\n control,\n register,\n}: {\n register: UseFormRegister<PlaygroundForm>;\n control: Control<PlaygroundForm>;\n}) => {\n const { fields, append, remove } = useFieldArray<PlaygroundForm>({\n control,\n name: \"headers\",\n });\n const selectedIdentity = useWatch({ name: \"identity\", control });\n const liveHeaders = useWatch({ name: \"headers\", control });\n\n const disableAuth = selectedIdentity !== NO_IDENTITY;\n\n return (\n <div className=\"grid grid-cols-[1fr_1fr_auto]\">\n {fields.map((header, i) => {\n const isDisabledByAuth =\n disableAuth && liveHeaders.at(i)?.name === \"Authorization\";\n\n return (\n <div\n key={header.id}\n className={cn(\n \"grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-muted rounded overflow-hidden group\",\n isDisabledByAuth && \"line-through\",\n )}\n title={\n isDisabledByAuth\n ? \"This header is disabled because authentication was selected\"\n : undefined\n }\n >\n <div className=\"flex gap-2 items-center\">\n <InlineInput\n {...register(`headers.${i}.name`)}\n placeholder=\"Name\"\n className=\"peer\"\n autoComplete=\"off\"\n />\n {isDisabledByAuth && (\n <TriangleAlertIcon size={16} className=\"text-amber-500\" />\n )}\n </div>\n <InlineInput\n placeholder={\"Value\"}\n className=\"peer\"\n {...register(`headers.${i}.value`)}\n autoComplete=\"off\"\n />\n <button\n className=\"hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible\"\n onClick={() => {\n remove(i);\n }}\n type=\"button\"\n >\n <XIcon size={16} />\n </button>\n <div className=\"col-span-full border-b border-border\"></div>\n </div>\n );\n })}\n <Button\n className=\"col-span-full mt-4\"\n onClick={() => append({ name: \"\", value: \"\" })}\n type=\"button\"\n >\n Add header\n </Button>\n </div>\n );\n};\n","import { forwardRef, InputHTMLAttributes } from \"react\";\nimport { Control, useFieldArray, UseFormRegister } from \"react-hook-form\";\nimport { cn } from \"../../../util/cn.js\";\nimport { DATA_ATTR, usePastellizedColor } from \"../ColorizedParam.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\ntype ParameterValueProps = {\n part: string;\n} & InputHTMLAttributes<HTMLInputElement>;\n\nconst ParameterValue = forwardRef<HTMLInputElement, ParameterValueProps>(\n function ParameterValue({ part, className, ...props }, ref) {\n const color = usePastellizedColor(part);\n return (\n <InlineInput\n {...props}\n ref={ref}\n className={cn(className, \"opacity-80 data-[active=true]:opacity-100\")}\n style={{\n // color: `hsl(${color})`,\n outlineColor: `hsl(${color})`,\n }}\n />\n );\n },\n);\n\nexport const PathParams = ({\n control,\n register,\n}: {\n register: UseFormRegister<PlaygroundForm>;\n control: Control<PlaygroundForm>;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"pathParams\",\n });\n\n return fields.map((part, i) => (\n <div\n key={part.id}\n className=\"grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-muted rounded overflow-hidden group\"\n >\n <InlineInput\n {...register(`pathParams.${i}.name`)}\n disabled\n placeholder=\"Name\"\n className=\"peer\"\n />\n <ParameterValue\n {...register(`pathParams.${i}.value`)}\n part={part.name}\n {...{ [DATA_ATTR]: part.name }}\n placeholder=\"Value\"\n className=\"peer\"\n />\n\n <div className=\"col-span-full border-b border-border\"></div>\n </div>\n ));\n};\n","import { XIcon } from \"lucide-react\";\nimport {\n Control,\n Controller,\n useFieldArray,\n useFormContext,\n} from \"react-hook-form\";\nimport { cn } from \"../../../util/cn.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\nexport const QueryParams = ({\n control,\n}: {\n control: Control<PlaygroundForm>;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"queryParams\",\n });\n const form = useFormContext<PlaygroundForm>();\n\n const requiredFields = form\n .getValues(`queryParams`)\n .map((param) => param.isRequired);\n\n return fields.map((field, i) => (\n <div\n key={field.id}\n className=\"px-2 grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-accent rounded overflow-hidden group\"\n >\n <Controller\n control={control}\n name={`queryParams.${i}.active`}\n render={({ field }) => (\n <input\n type=\"checkbox\"\n id={`queryParams.${i}.active`}\n checked={field.value}\n onChange={field.onChange}\n />\n )}\n />\n\n <Controller\n control={control}\n render={({ field }) => {\n return (\n <InlineInput asChild>\n <label\n className=\"flex items-center\"\n htmlFor={`queryParams.${i}.active`}\n title={requiredFields[i] ? \"Required field\" : undefined}\n >\n {field.value}\n {requiredFields[i] && <sup className=\"text-destructive\">*</sup>}\n </label>\n </InlineInput>\n );\n }}\n name={`queryParams.${i}.name`}\n />\n <Controller\n control={control}\n render={({ field }) => {\n return (\n <InlineInput {...field} placeholder=\"Value\" className=\"peer\" />\n );\n }}\n name={`queryParams.${i}.value`}\n />\n <Controller\n control={control}\n render={({ field }) => {\n return (\n <button\n type=\"button\"\n className={cn(\n \"hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible\",\n field.value.length === 0 && \"opacity-0 pointer-events-none\",\n )}\n onClick={() => field.onChange(\"\")}\n >\n <XIcon size={16} />\n </button>\n );\n }}\n name={`queryParams.${i}.value`}\n />\n\n <div className=\"-mx-2 col-span-full border-b border-border\"></div>\n </div>\n ));\n};\n","import { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useQuery } from \"urql\";\nimport { useApiIdentities } from \"../../../components/context/DevPortalProvider.js\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../components/Select.js\";\nimport { Spinner } from \"../../../components/Spinner.js\";\nimport { SyntaxHighlight } from \"../../../components/SyntaxHighlight.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Card } from \"../../../ui/Card.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../../ui/Tabs.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport { useOasConfig } from \"../context.js\";\nimport { graphql } from \"../graphql/index.js\";\nimport { createUrl } from \"./createUrl.js\";\nimport { Headers } from \"./Headers.js\";\nimport { PathParams } from \"./PathParams.js\";\nimport { QueryParams } from \"./QueryParams.js\";\n\nexport const NO_IDENTITY = \"__none\";\n\nconst GetServerQuery = graphql(/* GraphQL */ `\n query getServerQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n }\n }\n`);\n\nfunction mimeTypeToLanguage(mimeType: string) {\n const mimeTypeMapping = {\n \"application/json\": \"json\",\n \"text/json\": \"json\",\n \"text/html\": \"html\",\n \"text/css\": \"css\",\n \"text/javascript\": \"javascript\",\n \"application/xml\": \"xml\",\n \"application/xhtml+xml\": \"xhtml\",\n \"text/plain\": \"plain\",\n } as const;\n\n return Object.entries(mimeTypeMapping).find(([mime]) =>\n mimeType.includes(mime),\n )?.[0][1];\n}\n\nconst statusCodeMap: Record<number, string> = {\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 204: \"No Content\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 500: \"Internal Server Error\",\n};\n\nexport type Header = {\n name: string;\n value: string;\n};\nexport type QueryParam = {\n name: string;\n value: string;\n active: boolean;\n isRequired: boolean;\n};\nexport type PathParam = {\n name: string;\n value: string;\n};\n\nexport type PlaygroundForm = {\n body: string;\n queryParams: QueryParam[];\n pathParams: PathParam[];\n headers: Header[];\n identity?: string;\n};\n\nexport type PlaygroundContentProps = {\n url: string;\n method: string;\n headers?: Header[];\n queryParams?: QueryParam[];\n pathParams?: PathParam[];\n hasParams: boolean;\n};\n\nexport const Playground = ({\n url,\n method,\n headers = [{ name: \"\", value: \"\" }],\n queryParams = [],\n pathParams = [],\n hasParams,\n}: PlaygroundContentProps) => {\n const variables = useOasConfig();\n const [server] = useQuery({ query: GetServerQuery, variables });\n\n const { register, control, handleSubmit, watch, ...form } =\n useForm<PlaygroundForm>({\n defaultValues: {\n body: \"\",\n queryParams,\n headers,\n pathParams,\n identity: NO_IDENTITY,\n },\n });\n const formState = watch();\n const identities = useApiIdentities();\n\n const queryMutation = useMutation({\n mutationFn: async (data: PlaygroundForm) => {\n const requestUrl = createUrl(server.data?.schema.url ?? \"\", url, data);\n const start = performance.now();\n\n const request = new Request(requestUrl, {\n method: method.toUpperCase(),\n headers: Object.fromEntries(\n data.headers\n .filter((h) => h.name)\n .map((header) => [header.name, header.value]),\n ),\n });\n\n if (data.identity !== NO_IDENTITY) {\n identities.data\n ?.find((i) => i.id === data.identity)\n ?.authorizeRequest(request);\n }\n const response = await fetch(request);\n\n const body = await response.text();\n\n return {\n status: response.status,\n headers: response.headers,\n size: body.length,\n body,\n time: performance.now() - start,\n };\n },\n });\n\n const path = url.split(\"/\").map((part, i, arr) => (\n <Fragment key={part}>\n {part.startsWith(\"{\") && part.endsWith(\"}\") ? (\n <ColorizedParam\n name={part}\n backgroundOpacity=\"0\"\n slug={part.slice(1, -1)}\n >\n {\n formState.pathParams.find((p) => p.name === part.slice(1, -1))\n ?.value\n }\n </ColorizedParam>\n ) : (\n part\n )}\n {i < arr.length - 1 && \"/\"}\n <wbr />\n </Fragment>\n ));\n\n const lang = mimeTypeToLanguage(\n queryMutation.data?.headers.get(\"Content-Type\") ?? \"\",\n );\n\n const headerEntries = Array.from(queryMutation.data?.headers.entries() ?? []);\n\n const urlQueryParams = formState.queryParams\n .filter((p) => p.active)\n .map((p) => (\n <Fragment key={p.name}>\n {p.name}={p.value}\n <wbr />\n </Fragment>\n ));\n return (\n <FormProvider {...{ register, control, handleSubmit, watch, ...form }}>\n <form onSubmit={handleSubmit((data) => queryMutation.mutateAsync(data))}>\n <div className=\"grid grid-cols-2 text-sm h-full\">\n <div className=\"flex flex-col gap-4 p-8 bg-muted/50 after:bg-muted-foreground/20 relative after:absolute after:w-px after:inset-0 after:left-auto\">\n <div className=\"flex gap-2 items-stretch\">\n <div className=\"flex flex-1 items-center w-full border rounded-md border-border\">\n <div className=\"border-r border-border p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono\">\n {method.toUpperCase()}\n </div>\n <div className=\"p-2 font-mono text-xs\">\n {path}\n {urlQueryParams.length > 0 ? \"?\" : \"\"}\n {urlQueryParams}\n </div>\n </div>\n <Button type=\"submit\" className=\"h-auto flex gap-1\">\n Send\n </Button>\n </div>\n <Tabs defaultValue={hasParams ? \"parameters\" : \"headers\"}>\n <div className=\"flex justify-between\">\n <TabsList>\n {hasParams && (\n <TabsTrigger value=\"parameters\">Parameters</TabsTrigger>\n )}\n <TabsTrigger value=\"headers\">\n Headers{\" \"}\n {formState.headers.length > 0 &&\n `(${formState.headers.length})`}\n </TabsTrigger>\n <TabsTrigger\n value=\"body\"\n disabled={[\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n )}\n >\n Body\n </TabsTrigger>\n </TabsList>\n <div className=\"flex gap-2 items-center\">\n Auth:\n <Select\n onValueChange={(value) => form.setValue(\"identity\", value)}\n defaultValue={formState.identity}\n >\n <SelectTrigger className=\"w-[180px] flex\">\n {identities.isPending ? <Spinner /> : <SelectValue />}\n </SelectTrigger>\n <SelectContent align=\"center\">\n <SelectItem value={NO_IDENTITY}>None</SelectItem>\n {identities.data?.map((identity) => (\n <SelectItem key={identity.id} value={identity.id}>\n {identity.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <TabsContent value=\"headers\">\n <Headers control={control} register={register} />\n </TabsContent>\n <TabsContent value=\"parameters\">\n <div className=\"grid grid-cols-[min-content_1fr_1fr_auto]\">\n {pathParams.length > 0 && (\n <div className=\"font-semibold my-3 col-span-3\">\n Path Parameters\n </div>\n )}\n <PathParams control={control} register={register} />\n {queryParams.length > 0 && (\n <span className=\"font-semibold my-3 col-span-3\">\n Query Parameters\n </span>\n )}\n <QueryParams control={control} />\n </div>\n </TabsContent>\n <TabsContent value=\"body\">\n <textarea\n {...register(\"body\")}\n className=\"border border-border w-full rounded p-2 bg-muted h-40\"\n />\n </TabsContent>\n </Tabs>\n </div>\n <div className=\"flex flex-col gap-4 p-8 bg-muted/70\">\n {queryMutation.error ? (\n <div>{queryMutation.error.message}</div>\n ) : queryMutation.data ? (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex gap-2\">\n <div className=\"flex text-xs gap-6\">\n <div>\n Status: {queryMutation.data.status}{\" \"}\n {statusCodeMap[queryMutation.data.status] ?? \"\"}\n </div>\n <div>Time: {queryMutation.data.time.toFixed(0)}ms</div>\n <div>Size: {queryMutation.data.size} B</div>\n </div>\n </div>\n {/*<UrlDisplay host={host} path={url} />*/}\n <Tabs defaultValue=\"response\">\n <TabsList>\n <TabsTrigger value=\"response\">Response</TabsTrigger>\n <TabsTrigger value=\"headers\">\n {headerEntries.length\n ? `Headers (${headerEntries.length})`\n : \"No headers\"}\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"response\">\n <Card className=\"shadow-none p-4\">\n <SyntaxHighlight\n language={lang ?? \"json\"}\n noBackground\n className=\"overflow-x-auto \"\n code={queryMutation.data.body ?? JSON.stringify(\"\")}\n />\n </Card>\n </TabsContent>\n <TabsContent value=\"headers\">\n <Card className=\"grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4\">\n <div className=\"font-semibold\">Key</div>\n <div className=\"font-semibold\">Value</div>\n {headerEntries.map(([key, value]) => (\n <Fragment key={key}>\n <div>{key}</div>\n <div>{value}</div>\n </Fragment>\n ))}\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n ) : (\n <div className=\"grid place-items-center h-full\">\n <span className=\"text-[16px] font-semibold text-muted-foreground\">\n {queryMutation.isPending ? (\n <Spinner />\n ) : (\n \"Send a request first to see the response here\"\n )}\n </span>\n </div>\n )}\n </div>\n </div>\n </form>\n </FormProvider>\n );\n};\n\nexport default Playground;\n"],"names":["jsx","jsxs","TriangleAlertIcon","XIcon","ParameterValue","field","_a","_c","_b"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { j as jsxRuntimeExports, O as Outlet } from "./jsx-runtime-DvZ6OKMM.js";
2
- import { O as OasConfigProvider } from "./context-BoN_3uxi.js";
3
- import { P as Provider } from "./urql-DtVKPBx_.js";
4
- function OpenApiRoute({
5
- config,
6
- client
7
- }) {
8
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Provider, { value: client, children: /* @__PURE__ */ jsxRuntimeExports.jsx(OasConfigProvider, { value: { config }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Outlet, {}) }) });
9
- }
10
- export {
11
- OpenApiRoute
12
- };
13
- //# sourceMappingURL=Route-CR6TEwVC.js.map