zudoku 0.3.0-dev.55 → 0.3.0-dev.56

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 (143) hide show
  1. package/dist/config/validators/validate.d.ts +12 -12
  2. package/dist/lib/components/DeveloperHint.d.ts +5 -0
  3. package/dist/lib/components/DeveloperHint.js +10 -0
  4. package/dist/lib/components/DeveloperHint.js.map +1 -0
  5. package/dist/lib/components/NotFoundPage.js +2 -2
  6. package/dist/lib/components/NotFoundPage.js.map +1 -1
  7. package/dist/lib/plugins/api-keys/ProtectedRoute.d.ts +1 -0
  8. package/dist/lib/plugins/api-keys/ProtectedRoute.js +14 -0
  9. package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -0
  10. package/dist/lib/plugins/api-keys/index.js +2 -12
  11. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  12. package/dist/lib/plugins/openapi/OperationList.js +2 -2
  13. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  14. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -3
  15. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  16. package/lib/AnchorLink-GNsUeGSX.js +705 -0
  17. package/lib/{AnchorLink-BaXHjhF-.js.map → AnchorLink-GNsUeGSX.js.map} +1 -1
  18. package/lib/Button-DpHMZvVs.js +4571 -0
  19. package/lib/Button-DpHMZvVs.js.map +1 -0
  20. package/lib/DevPortalProvider-Do9oJqme.js +1081 -0
  21. package/lib/{DevPortalProvider-GjdO0Xr-.js.map → DevPortalProvider-Do9oJqme.js.map} +1 -1
  22. package/lib/Markdown-DtLFdxD1.js +15031 -0
  23. package/lib/Markdown-DtLFdxD1.js.map +1 -0
  24. package/lib/MdxPage-CbwYRKf5.js +190 -0
  25. package/lib/{MdxPage-Dlujuj-J.js.map → MdxPage-CbwYRKf5.js.map} +1 -1
  26. package/lib/OperationList-DpR4KzIJ.js +5570 -0
  27. package/lib/OperationList-DpR4KzIJ.js.map +1 -0
  28. package/lib/Route-C1LyvITr.js +13 -0
  29. package/lib/{Route-CR6TEwVC.js.map → Route-C1LyvITr.js.map} +1 -1
  30. package/lib/Spinner-Bhbs5aPI.js +182 -0
  31. package/lib/Spinner-Bhbs5aPI.js.map +1 -0
  32. package/lib/_commonjsHelpers-BVfed4GL.js +29 -0
  33. package/lib/_commonjsHelpers-BVfed4GL.js.map +1 -0
  34. package/lib/assets/index-BPdJm2ty.js +4765 -0
  35. package/lib/assets/{index-CpIig0AX.js.map → index-BPdJm2ty.js.map} +1 -1
  36. package/lib/assets/worker-BjPv-hjP.js +14897 -0
  37. package/lib/assets/{worker-B5k2aBV9.js.map → worker-BjPv-hjP.js.map} +1 -1
  38. package/lib/context-_fYfJFgk.js +14 -0
  39. package/lib/{context-BoN_3uxi.js.map → context-_fYfJFgk.js.map} +1 -1
  40. package/lib/hook-Biq3zYel.js +92 -0
  41. package/lib/hook-Biq3zYel.js.map +1 -0
  42. package/lib/{index-Dih8IAqw.js → index-DZ910ttL.js} +83 -103
  43. package/lib/{index-Dih8IAqw.js.map → index-DZ910ttL.js.map} +1 -1
  44. package/lib/index-gsAuUwQh.js +418 -0
  45. package/lib/index-gsAuUwQh.js.map +1 -0
  46. package/lib/index-pI9JkN46.js +4765 -0
  47. package/lib/{index-Bn03IPZt.js.map → index-pI9JkN46.js.map} +1 -1
  48. package/lib/jsx-runtime-CJZJivg2.js +1526 -0
  49. package/lib/{jsx-runtime-DvZ6OKMM.js.map → jsx-runtime-CJZJivg2.js.map} +1 -1
  50. package/lib/prism-bash.min-DadFsM4Z.js +7 -0
  51. package/lib/{prism-bash.min-BtBk0onv.js.map → prism-bash.min-DadFsM4Z.js.map} +1 -1
  52. package/lib/prism-csharp.min-Yizuc34Y.js +35 -0
  53. package/lib/{prism-csharp.min-Cv7D49bv.js.map → prism-csharp.min-Yizuc34Y.js.map} +1 -1
  54. package/lib/prism-java.min-d5iT_mOd.js +7 -0
  55. package/lib/{prism-java.min-tNK-JX6x.js.map → prism-java.min-d5iT_mOd.js.map} +1 -1
  56. package/lib/prism-json.min-B1GJqK1k.js +2 -0
  57. package/lib/{prism-json.min-Cdtv-CME.js.map → prism-json.min-B1GJqK1k.js.map} +1 -1
  58. package/lib/prism-markup-templating-DZrrEs0A.js +62 -0
  59. package/lib/{prism-markup-templating-iotg2sCU.js.map → prism-markup-templating-DZrrEs0A.js.map} +1 -1
  60. package/lib/prism-objectivec.min-BXSWqpJJ.js +2 -0
  61. package/lib/{prism-objectivec.min-CY4WGixz.js.map → prism-objectivec.min-BXSWqpJJ.js.map} +1 -1
  62. package/lib/prism-php.min-o7FpoMP_.js +11 -0
  63. package/lib/{prism-php.min-T6sIVgED.js.map → prism-php.min-o7FpoMP_.js.map} +1 -1
  64. package/lib/prism-ruby.min-C7LwcKyz.js +10 -0
  65. package/lib/{prism-ruby.min-B-2KAa4y.js.map → prism-ruby.min-C7LwcKyz.js.map} +1 -1
  66. package/lib/router-CBw2vqJE.js +2973 -0
  67. package/lib/{router-ButO1QyY.js.map → router-CBw2vqJE.js.map} +1 -1
  68. package/lib/slugify-CiPVjteN.js +28 -0
  69. package/lib/{slugify-CmS97Vy8.js.map → slugify-CiPVjteN.js.map} +1 -1
  70. package/lib/state-DKdaQzvh.js +288 -0
  71. package/lib/{state-CmGfNKhR.js.map → state-DKdaQzvh.js.map} +1 -1
  72. package/lib/urql-DMlBWUKL.js +1592 -0
  73. package/lib/{urql-DtVKPBx_.js.map → urql-DMlBWUKL.js.map} +1 -1
  74. package/lib/util-_jwUlTBU.js +41 -0
  75. package/lib/{util-B5KX4h4M.js.map → util-_jwUlTBU.js.map} +1 -1
  76. package/lib/zudoku.auth-auth0.js +18 -24
  77. package/lib/zudoku.auth-auth0.js.map +1 -1
  78. package/lib/zudoku.auth-clerk.js +34 -43
  79. package/lib/zudoku.auth-clerk.js.map +1 -1
  80. package/lib/zudoku.auth-openid.js +734 -1121
  81. package/lib/zudoku.auth-openid.js.map +1 -1
  82. package/lib/zudoku.components.js +822 -1076
  83. package/lib/zudoku.components.js.map +1 -1
  84. package/lib/zudoku.openapi-worker.js +9691 -13786
  85. package/lib/zudoku.openapi-worker.js.map +1 -1
  86. package/lib/zudoku.plugin-api-keys.js +171 -208
  87. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  88. package/lib/zudoku.plugin-markdown.js +33 -41
  89. package/lib/zudoku.plugin-markdown.js.map +1 -1
  90. package/lib/zudoku.plugin-openapi.js +6 -6
  91. package/lib/zudoku.plugin-redirect.js +8 -10
  92. package/lib/zudoku.plugin-redirect.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/lib/components/DeveloperHint.tsx +25 -0
  95. package/src/lib/components/NotFoundPage.tsx +8 -14
  96. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +29 -0
  97. package/src/lib/plugins/api-keys/index.tsx +2 -21
  98. package/src/lib/plugins/openapi/OperationList.tsx +5 -8
  99. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +3 -5
  100. package/lib/AnchorLink-BaXHjhF-.js +0 -989
  101. package/lib/Combination-BfufJFkX.js +0 -1365
  102. package/lib/Combination-BfufJFkX.js.map +0 -1
  103. package/lib/DevPortalProvider-GjdO0Xr-.js +0 -1610
  104. package/lib/Markdown-B8nPVql1.js +0 -19708
  105. package/lib/Markdown-B8nPVql1.js.map +0 -1
  106. package/lib/MdxPage-Dlujuj-J.js +0 -223
  107. package/lib/OperationList-krPgt6sE.js +0 -8041
  108. package/lib/OperationList-krPgt6sE.js.map +0 -1
  109. package/lib/Playground-DOHxca0P.js +0 -539
  110. package/lib/Playground-DOHxca0P.js.map +0 -1
  111. package/lib/Route-CR6TEwVC.js +0 -13
  112. package/lib/Select-Boi_pe3L.js +0 -5298
  113. package/lib/Select-Boi_pe3L.js.map +0 -1
  114. package/lib/Spinner-oU0QJmi_.js +0 -16
  115. package/lib/Spinner-oU0QJmi_.js.map +0 -1
  116. package/lib/_commonjsHelpers-BxmBWJD2.js +0 -34
  117. package/lib/_commonjsHelpers-BxmBWJD2.js.map +0 -1
  118. package/lib/assets/index-CpIig0AX.js +0 -6341
  119. package/lib/assets/worker-B5k2aBV9.js +0 -18921
  120. package/lib/context-BoN_3uxi.js +0 -17
  121. package/lib/hook-CIuFuyBT.js +0 -90
  122. package/lib/hook-CIuFuyBT.js.map +0 -1
  123. package/lib/index-BL1P4Gqq.js +0 -280
  124. package/lib/index-BL1P4Gqq.js.map +0 -1
  125. package/lib/index-Bn03IPZt.js +0 -6341
  126. package/lib/index-FprhHF51.js +0 -253
  127. package/lib/index-FprhHF51.js.map +0 -1
  128. package/lib/jsx-runtime-DvZ6OKMM.js +0 -2110
  129. package/lib/mutation-DWY9x2Uc.js +0 -250
  130. package/lib/mutation-DWY9x2Uc.js.map +0 -1
  131. package/lib/prism-bash.min-BtBk0onv.js +0 -7
  132. package/lib/prism-csharp.min-Cv7D49bv.js +0 -30
  133. package/lib/prism-java.min-tNK-JX6x.js +0 -7
  134. package/lib/prism-json.min-Cdtv-CME.js +0 -2
  135. package/lib/prism-markup-templating-iotg2sCU.js +0 -94
  136. package/lib/prism-objectivec.min-CY4WGixz.js +0 -2
  137. package/lib/prism-php.min-T6sIVgED.js +0 -11
  138. package/lib/prism-ruby.min-B-2KAa4y.js +0 -8
  139. package/lib/router-ButO1QyY.js +0 -4062
  140. package/lib/slugify-CmS97Vy8.js +0 -50
  141. package/lib/state-CmGfNKhR.js +0 -436
  142. package/lib/urql-DtVKPBx_.js +0 -2567
  143. 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