zudoku 0.3.0-dev.4 → 0.3.0-dev.40

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 (474) hide show
  1. package/dist/app/App.d.ts +1 -2
  2. package/dist/app/App.js +1 -28
  3. package/dist/app/App.js.map +1 -1
  4. package/dist/app/demo.d.ts +2 -0
  5. package/dist/app/demo.js +27 -0
  6. package/dist/app/demo.js.map +1 -0
  7. package/dist/app/entry.client.d.ts +2 -0
  8. package/dist/app/entry.client.js +35 -0
  9. package/dist/app/entry.client.js.map +1 -0
  10. package/dist/app/entry.server.d.ts +12 -0
  11. package/dist/app/entry.server.js +104 -0
  12. package/dist/app/entry.server.js.map +1 -0
  13. package/dist/app/main.d.ts +6 -1
  14. package/dist/app/main.js +54 -12
  15. package/dist/app/main.js.map +1 -1
  16. package/dist/app/standalone.d.ts +2 -0
  17. package/dist/app/standalone.js +32 -0
  18. package/dist/app/standalone.js.map +1 -0
  19. package/dist/app/tailwind.d.ts +1 -1
  20. package/dist/app/tailwind.js +0 -4
  21. package/dist/app/tailwind.js.map +1 -1
  22. package/dist/app/zudoku-manifest.d.ts +1 -0
  23. package/dist/app/zudoku-manifest.js +20 -0
  24. package/dist/app/zudoku-manifest.js.map +1 -0
  25. package/dist/cli/cmds/dev.js +5 -0
  26. package/dist/cli/cmds/dev.js.map +1 -1
  27. package/dist/cli/dev/handler.d.ts +1 -0
  28. package/dist/cli/dev/handler.js +3 -1
  29. package/dist/cli/dev/handler.js.map +1 -1
  30. package/dist/config/config.d.ts +15 -16
  31. package/dist/internal.d.ts +1 -0
  32. package/dist/internal.js +2 -0
  33. package/dist/internal.js.map +1 -0
  34. package/dist/lib/authentication/Callback.js +1 -1
  35. package/dist/lib/authentication/Callback.js.map +1 -1
  36. package/dist/lib/authentication/authentication.d.ts +2 -2
  37. package/dist/lib/authentication/hook.d.ts +1 -0
  38. package/dist/lib/authentication/hook.js +1 -0
  39. package/dist/lib/authentication/hook.js.map +1 -1
  40. package/dist/lib/authentication/providers/auth0.js +1 -0
  41. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  42. package/dist/lib/authentication/providers/clerk.js +4 -0
  43. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  44. package/dist/lib/authentication/providers/openid.d.ts +1 -1
  45. package/dist/lib/authentication/providers/openid.js +2 -0
  46. package/dist/lib/authentication/providers/openid.js.map +1 -1
  47. package/dist/lib/authentication/state.d.ts +1 -0
  48. package/dist/lib/authentication/state.js +1 -0
  49. package/dist/lib/authentication/state.js.map +1 -1
  50. package/dist/lib/components/Bootstrap.d.ts +12 -0
  51. package/dist/lib/components/Bootstrap.js +9 -0
  52. package/dist/lib/components/Bootstrap.js.map +1 -0
  53. package/dist/lib/components/DevPortal.d.ts +4 -19
  54. package/dist/lib/components/DevPortal.js +17 -12
  55. package/dist/lib/components/DevPortal.js.map +1 -1
  56. package/dist/lib/components/ErrorPage.d.ts +6 -0
  57. package/dist/lib/components/ErrorPage.js +9 -0
  58. package/dist/lib/components/ErrorPage.js.map +1 -0
  59. package/dist/lib/components/Header.js +3 -3
  60. package/dist/lib/components/Header.js.map +1 -1
  61. package/dist/lib/components/Heading.d.ts +9 -4
  62. package/dist/lib/components/Heading.js +17 -2
  63. package/dist/lib/components/Heading.js.map +1 -1
  64. package/dist/lib/components/InlineCode.d.ts +5 -0
  65. package/dist/lib/components/InlineCode.js +4 -0
  66. package/dist/lib/components/InlineCode.js.map +1 -0
  67. package/dist/lib/components/Layout.js +3 -2
  68. package/dist/lib/components/Layout.js.map +1 -1
  69. package/dist/lib/components/NotFoundPage.d.ts +1 -0
  70. package/dist/lib/components/NotFoundPage.js +12 -0
  71. package/dist/lib/components/NotFoundPage.js.map +1 -0
  72. package/dist/lib/components/SyntaxHighlight.d.ts +3 -2
  73. package/dist/lib/components/SyntaxHighlight.js +21 -19
  74. package/dist/lib/components/SyntaxHighlight.js.map +1 -1
  75. package/dist/lib/components/TopNavigation.d.ts +1 -1
  76. package/dist/lib/components/TopNavigation.js +4 -0
  77. package/dist/lib/components/TopNavigation.js.map +1 -1
  78. package/dist/lib/components/context/DevPortalProvider.d.ts +1 -1
  79. package/dist/lib/components/context/DevPortalProvider.js +2 -2
  80. package/dist/lib/components/context/DevPortalProvider.js.map +1 -1
  81. package/dist/lib/components/index.d.ts +28 -3
  82. package/dist/lib/components/index.js +17 -3
  83. package/dist/lib/components/index.js.map +1 -1
  84. package/dist/lib/core/DevPortalContext.d.ts +33 -3
  85. package/dist/lib/core/DevPortalContext.js +8 -5
  86. package/dist/lib/core/DevPortalContext.js.map +1 -1
  87. package/dist/lib/core/plugins.d.ts +7 -4
  88. package/dist/lib/core/plugins.js +1 -0
  89. package/dist/lib/core/plugins.js.map +1 -1
  90. package/dist/lib/errors/ErrorAlert.d.ts +3 -0
  91. package/dist/lib/errors/ErrorAlert.js +8 -0
  92. package/dist/lib/errors/ErrorAlert.js.map +1 -0
  93. package/dist/lib/errors/RouterError.d.ts +1 -0
  94. package/dist/lib/errors/RouterError.js +12 -0
  95. package/dist/lib/errors/RouterError.js.map +1 -0
  96. package/dist/lib/errors/ServerError.d.ts +3 -0
  97. package/dist/lib/errors/ServerError.js +6 -0
  98. package/dist/lib/errors/ServerError.js.map +1 -0
  99. package/dist/lib/errors/TopLevelError.d.ts +2 -0
  100. package/dist/lib/errors/TopLevelError.js +7 -0
  101. package/dist/lib/errors/TopLevelError.js.map +1 -0
  102. package/dist/lib/oas/graphql/index.js +1 -1
  103. package/dist/lib/oas/graphql/index.js.map +1 -1
  104. package/dist/lib/oas/parser/index.d.ts +1 -1
  105. package/dist/lib/oas/parser/index.js +38 -12
  106. package/dist/lib/oas/parser/index.js.map +1 -1
  107. package/dist/lib/plugins/api-keys/CreateApiKey.d.ts +4 -0
  108. package/dist/lib/plugins/{api-key → api-keys}/CreateApiKey.js +1 -1
  109. package/dist/lib/plugins/api-keys/CreateApiKey.js.map +1 -0
  110. package/dist/lib/plugins/api-keys/SettingsApiKeys.d.ts +4 -0
  111. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +38 -0
  112. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -0
  113. package/dist/lib/plugins/{api-key → api-keys}/index.js +32 -9
  114. package/dist/lib/plugins/api-keys/index.js.map +1 -0
  115. package/dist/lib/plugins/markdown/MdxPage.d.ts +3 -2
  116. package/dist/lib/plugins/markdown/MdxPage.js +7 -6
  117. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  118. package/dist/lib/plugins/markdown/Toc.js +1 -1
  119. package/dist/lib/plugins/markdown/Toc.js.map +1 -1
  120. package/dist/lib/plugins/markdown/generateRoutes.d.ts +3 -3
  121. package/dist/lib/plugins/markdown/generateRoutes.js +4 -4
  122. package/dist/lib/plugins/markdown/generateRoutes.js.map +1 -1
  123. package/dist/lib/plugins/markdown/index.d.ts +4 -1
  124. package/dist/lib/plugins/markdown/index.js +3 -7
  125. package/dist/lib/plugins/markdown/index.js.map +1 -1
  126. package/dist/lib/plugins/openapi/OperationList.js +16 -5
  127. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  128. package/dist/lib/plugins/openapi/OperationListItem.js +10 -5
  129. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  130. package/dist/lib/plugins/openapi/ParameterList.js +1 -1
  131. package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
  132. package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
  133. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  134. package/dist/lib/plugins/openapi/{MakeRequest.d.ts → PlaygroundDialogWrapper.d.ts} +1 -1
  135. package/dist/lib/plugins/openapi/{MakeRequest.js → PlaygroundDialogWrapper.js} +5 -5
  136. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js.map +1 -0
  137. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +1 -9
  138. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  139. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +1 -1
  140. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  141. package/dist/lib/plugins/openapi/Route.d.ts +6 -0
  142. package/dist/lib/plugins/openapi/Route.js +8 -0
  143. package/dist/lib/plugins/openapi/Route.js.map +1 -0
  144. package/dist/lib/plugins/openapi/SchemaListView.js +6 -27
  145. package/dist/lib/plugins/openapi/SchemaListView.js.map +1 -1
  146. package/dist/lib/plugins/openapi/SchemaListViewItem.d.ts +7 -0
  147. package/dist/lib/plugins/openapi/SchemaListViewItem.js +16 -0
  148. package/dist/lib/plugins/openapi/SchemaListViewItem.js.map +1 -0
  149. package/dist/lib/plugins/openapi/SchemaListViewItemGroup.d.ts +8 -0
  150. package/dist/lib/plugins/openapi/SchemaListViewItemGroup.js +17 -0
  151. package/dist/lib/plugins/openapi/SchemaListViewItemGroup.js.map +1 -0
  152. package/dist/lib/plugins/openapi/Sidecar.js +10 -8
  153. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  154. package/dist/lib/plugins/openapi/{Select.d.ts → SimpleSelect.d.ts} +3 -2
  155. package/dist/lib/plugins/openapi/SimpleSelect.js +5 -0
  156. package/dist/lib/plugins/openapi/SimpleSelect.js.map +1 -0
  157. package/dist/lib/plugins/openapi/client/createMemoryClient.d.ts +12 -0
  158. package/dist/lib/plugins/openapi/client/createMemoryClient.js +46 -0
  159. package/dist/lib/plugins/openapi/client/createMemoryClient.js.map +1 -0
  160. package/dist/lib/plugins/openapi/client/createServer.d.ts +4 -0
  161. package/dist/lib/plugins/openapi/client/createServer.js +30 -0
  162. package/dist/lib/plugins/openapi/client/createServer.js.map +1 -0
  163. package/dist/lib/plugins/openapi/client/createWorkerClient.d.ts +10 -0
  164. package/dist/lib/plugins/openapi/{worker/createSharedWorkerClient.js → client/createWorkerClient.js} +15 -2
  165. package/dist/lib/plugins/openapi/client/createWorkerClient.js.map +1 -0
  166. package/dist/lib/plugins/openapi/client/interfaces.d.ts +4 -0
  167. package/dist/lib/plugins/openapi/client/interfaces.js +2 -0
  168. package/dist/lib/plugins/openapi/client/interfaces.js.map +1 -0
  169. package/dist/lib/plugins/openapi/{worker → client}/worker.js +2 -2
  170. package/dist/lib/plugins/openapi/client/worker.js.map +1 -0
  171. package/dist/lib/plugins/openapi/context.d.ts +5 -0
  172. package/dist/lib/plugins/openapi/context.js +11 -0
  173. package/dist/lib/plugins/openapi/context.js.map +1 -0
  174. package/dist/lib/plugins/openapi/index.d.ts +4 -18
  175. package/dist/lib/plugins/openapi/index.js +35 -20
  176. package/dist/lib/plugins/openapi/index.js.map +1 -1
  177. package/dist/lib/plugins/openapi/interfaces.d.ts +15 -0
  178. package/dist/lib/plugins/openapi/interfaces.js +2 -0
  179. package/dist/lib/plugins/openapi/interfaces.js.map +1 -0
  180. package/dist/lib/plugins/openapi/playground/Headers.d.ts +2 -3
  181. package/dist/lib/plugins/openapi/playground/Headers.js +16 -6
  182. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  183. package/dist/lib/plugins/openapi/playground/PathParams.d.ts +1 -1
  184. package/dist/lib/plugins/openapi/playground/Playground.d.ts +4 -3
  185. package/dist/lib/plugins/openapi/playground/Playground.js +8 -12
  186. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  187. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.d.ts +3 -0
  188. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +10 -0
  189. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -0
  190. package/dist/lib/plugins/openapi/playground/QueryParams.d.ts +1 -1
  191. package/dist/lib/plugins/openapi/playground/QueryParams.js +2 -1
  192. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  193. package/dist/lib/plugins/openapi/playground/createUrl.d.ts +1 -1
  194. package/dist/lib/plugins/openapi/util/prose.d.ts +1 -0
  195. package/dist/lib/plugins/openapi/util/prose.js +4 -0
  196. package/dist/lib/plugins/openapi/util/prose.js.map +1 -0
  197. package/dist/lib/plugins/openapi-worker.d.ts +1 -1
  198. package/dist/lib/plugins/openapi-worker.js +1 -1
  199. package/dist/lib/plugins/openapi-worker.js.map +1 -1
  200. package/dist/lib/plugins/redirect/index.js +2 -3
  201. package/dist/lib/plugins/redirect/index.js.map +1 -1
  202. package/dist/lib/ui/Callout.js +2 -2
  203. package/dist/lib/ui/Callout.js.map +1 -1
  204. package/dist/lib/ui/button-variants.d.ts +2 -2
  205. package/dist/lib/util/MdxComponents.js +2 -2
  206. package/dist/lib/util/MdxComponents.js.map +1 -1
  207. package/dist/lib/util/groupBy.d.ts +1 -6
  208. package/dist/lib/util/groupBy.js +10 -8
  209. package/dist/lib/util/groupBy.js.map +1 -1
  210. package/dist/lib/util/logInit.d.ts +1 -0
  211. package/dist/lib/util/logInit.js +9 -0
  212. package/dist/lib/util/logInit.js.map +1 -0
  213. package/dist/lib/util/objectEntries.d.ts +4 -0
  214. package/dist/lib/util/objectEntries.js +2 -0
  215. package/dist/lib/util/objectEntries.js.map +1 -0
  216. package/dist/lib/util/renderIf.d.ts +1 -0
  217. package/dist/lib/util/renderIf.js +2 -0
  218. package/dist/lib/util/renderIf.js.map +1 -0
  219. package/dist/vite/build.js +27 -8
  220. package/dist/vite/build.js.map +1 -1
  221. package/dist/vite/config.d.ts +13 -9
  222. package/dist/vite/config.js +98 -57
  223. package/dist/vite/config.js.map +1 -1
  224. package/dist/vite/config.test.js +7 -4
  225. package/dist/vite/config.test.js.map +1 -1
  226. package/dist/vite/dev-server.d.ts +2 -1
  227. package/dist/vite/dev-server.js +34 -13
  228. package/dist/vite/dev-server.js.map +1 -1
  229. package/dist/vite/html.js +5 -5
  230. package/dist/vite/html.js.map +1 -1
  231. package/dist/vite/plugin-api-keys.js +7 -8
  232. package/dist/vite/plugin-api-keys.js.map +1 -1
  233. package/dist/vite/plugin-api.js +8 -19
  234. package/dist/vite/plugin-api.js.map +1 -1
  235. package/dist/vite/plugin-auth.js +5 -6
  236. package/dist/vite/plugin-auth.js.map +1 -1
  237. package/dist/vite/plugin-component.js +3 -2
  238. package/dist/vite/plugin-component.js.map +1 -1
  239. package/dist/vite/plugin-config.d.ts +0 -1
  240. package/dist/vite/plugin-config.js +13 -7
  241. package/dist/vite/plugin-config.js.map +1 -1
  242. package/dist/vite/plugin-custom-css.d.ts +6 -0
  243. package/dist/vite/plugin-custom-css.js +55 -0
  244. package/dist/vite/plugin-custom-css.js.map +1 -0
  245. package/dist/vite/plugin-docs.js +14 -4
  246. package/dist/vite/plugin-docs.js.map +1 -1
  247. package/dist/vite/plugin-docs.test.js +1 -1
  248. package/dist/vite/plugin-docs.test.js.map +1 -1
  249. package/dist/vite/plugin-html.js +1 -9
  250. package/dist/vite/plugin-html.js.map +1 -1
  251. package/dist/vite/plugin-mdx.d.ts +3 -1
  252. package/dist/vite/plugin-mdx.js +4 -4
  253. package/dist/vite/plugin-mdx.js.map +1 -1
  254. package/dist/vite/plugin-redirect.js +9 -9
  255. package/dist/vite/plugin-redirect.js.map +1 -1
  256. package/dist/vite/plugin.js +3 -3
  257. package/dist/vite/plugin.js.map +1 -1
  258. package/dist/vite/prerender.d.ts +1 -0
  259. package/dist/vite/prerender.js +59 -0
  260. package/dist/vite/prerender.js.map +1 -0
  261. package/lib/AnchorLink-DCdBbdqo.js +705 -0
  262. package/lib/AnchorLink-DCdBbdqo.js.map +1 -0
  263. package/lib/DevPortalProvider-C-O1s7mm.js +1081 -0
  264. package/lib/DevPortalProvider-C-O1s7mm.js.map +1 -0
  265. package/lib/Markdown-CGZJUYcj.js +15028 -0
  266. package/lib/Markdown-CGZJUYcj.js.map +1 -0
  267. package/lib/MdxPage-BZLuBOqR.js +190 -0
  268. package/lib/MdxPage-BZLuBOqR.js.map +1 -0
  269. package/lib/OperationList-BEpN70_E.js +5562 -0
  270. package/lib/OperationList-BEpN70_E.js.map +1 -0
  271. package/lib/Route-WiMUalLG.js +13 -0
  272. package/lib/Route-WiMUalLG.js.map +1 -0
  273. package/lib/Select-BQ9-3iTJ.js +4571 -0
  274. package/lib/Select-BQ9-3iTJ.js.map +1 -0
  275. package/lib/Spinner-C1L_TK5f.js +182 -0
  276. package/lib/Spinner-C1L_TK5f.js.map +1 -0
  277. package/lib/_commonjsHelpers-BkfeUUK-.js +1 -0
  278. package/lib/_commonjsHelpers-BkfeUUK-.js.map +1 -0
  279. package/lib/assets/index-BPdJm2ty.js +1 -0
  280. package/lib/assets/index-BPdJm2ty.js.map +1 -0
  281. package/lib/assets/{worker-BCcpCNJ7.js → worker-BjPv-hjP.js} +10742 -10318
  282. package/lib/assets/worker-BjPv-hjP.js.map +1 -0
  283. package/lib/context-_fYfJFgk.js +14 -0
  284. package/lib/context-_fYfJFgk.js.map +1 -0
  285. package/lib/createWorkerClient-TWecYOlx.js +16698 -0
  286. package/lib/createWorkerClient-TWecYOlx.js.map +1 -0
  287. package/lib/hook-SM2dMVmI.js +77 -0
  288. package/lib/hook-SM2dMVmI.js.map +1 -0
  289. package/lib/index-CtLNbq0d.js +412 -0
  290. package/lib/index-CtLNbq0d.js.map +1 -0
  291. package/lib/index-PvQa9XLl.js +724 -0
  292. package/lib/index-PvQa9XLl.js.map +1 -0
  293. package/lib/index-pI9JkN46.js +4765 -0
  294. package/lib/index-pI9JkN46.js.map +1 -0
  295. package/lib/jsx-runtime-DLtUZ5Ve.js +1526 -0
  296. package/lib/jsx-runtime-DLtUZ5Ve.js.map +1 -0
  297. package/lib/prism-bash.min-DadFsM4Z.js +1 -0
  298. package/lib/prism-bash.min-DadFsM4Z.js.map +1 -0
  299. package/lib/prism-csharp.min-Yizuc34Y.js +35 -0
  300. package/lib/prism-csharp.min-Yizuc34Y.js.map +1 -0
  301. package/lib/prism-java.min-d5iT_mOd.js +1 -0
  302. package/lib/prism-java.min-d5iT_mOd.js.map +1 -0
  303. package/lib/prism-json.min-B1GJqK1k.js +1 -0
  304. package/lib/prism-json.min-B1GJqK1k.js.map +1 -0
  305. package/lib/prism-markup-templating-DZrrEs0A.js +1 -0
  306. package/lib/prism-markup-templating-DZrrEs0A.js.map +1 -0
  307. package/lib/prism-objectivec.min-BXSWqpJJ.js +2 -0
  308. package/lib/prism-objectivec.min-BXSWqpJJ.js.map +1 -0
  309. package/lib/prism-php.min-o7FpoMP_.js +1 -0
  310. package/lib/prism-php.min-o7FpoMP_.js.map +1 -0
  311. package/lib/prism-ruby.min-C7LwcKyz.js +1 -0
  312. package/lib/prism-ruby.min-C7LwcKyz.js.map +1 -0
  313. package/lib/router-BkOLuJlq.js +2973 -0
  314. package/lib/router-BkOLuJlq.js.map +1 -0
  315. package/lib/slugify-DbLhpSPt.js +28 -0
  316. package/lib/slugify-DbLhpSPt.js.map +1 -0
  317. package/lib/{state-oycsxkHz.js → state-Ds_OxRHP.js} +20 -18
  318. package/lib/state-Ds_OxRHP.js.map +1 -0
  319. package/lib/util-Cgie7wjb.js +41 -0
  320. package/lib/util-Cgie7wjb.js.map +1 -0
  321. package/lib/zudoku.auth-auth0.js +3 -1
  322. package/lib/zudoku.auth-auth0.js.map +1 -0
  323. package/lib/zudoku.auth-clerk.js +11 -8
  324. package/lib/zudoku.auth-clerk.js.map +1 -0
  325. package/lib/zudoku.auth-openid.js +5 -2
  326. package/lib/zudoku.auth-openid.js.map +1 -0
  327. package/lib/zudoku.components.js +800 -464
  328. package/lib/zudoku.components.js.map +1 -0
  329. package/lib/zudoku.openapi-worker.js +3 -223
  330. package/lib/zudoku.openapi-worker.js.map +1 -0
  331. package/lib/zudoku.plugin-api-keys.js +287 -0
  332. package/lib/zudoku.plugin-api-keys.js.map +1 -0
  333. package/lib/zudoku.plugin-markdown.js +49 -0
  334. package/lib/zudoku.plugin-markdown.js.map +1 -0
  335. package/lib/zudoku.plugin-openapi.js +9 -0
  336. package/lib/zudoku.plugin-openapi.js.map +1 -0
  337. package/lib/zudoku.plugin-redirect.js +11 -0
  338. package/lib/zudoku.plugin-redirect.js.map +1 -0
  339. package/package.json +33 -15
  340. package/src/app/App.tsx +0 -40
  341. package/src/app/demo-cdn.html +26 -0
  342. package/src/app/demo.html +18 -0
  343. package/src/app/demo.tsx +40 -0
  344. package/src/app/entry.client.tsx +47 -0
  345. package/src/app/entry.server.tsx +158 -0
  346. package/src/app/main.css +74 -0
  347. package/src/app/main.tsx +71 -15
  348. package/src/app/standalone.html +20 -0
  349. package/src/app/standalone.tsx +46 -0
  350. package/src/app/tailwind.ts +2 -6
  351. package/src/app/zudoku-manifest.ts +22 -0
  352. package/src/lib/authentication/Callback.tsx +1 -1
  353. package/src/lib/authentication/authentication.ts +2 -5
  354. package/src/lib/authentication/hook.ts +1 -0
  355. package/src/lib/authentication/providers/auth0.tsx +1 -0
  356. package/src/lib/authentication/providers/clerk.tsx +3 -0
  357. package/src/lib/authentication/providers/openid.tsx +3 -1
  358. package/src/lib/authentication/state.ts +2 -0
  359. package/src/lib/components/Bootstrap.tsx +37 -0
  360. package/src/lib/components/DevPortal.tsx +41 -56
  361. package/src/lib/components/ErrorPage.tsx +28 -0
  362. package/src/lib/components/Header.tsx +7 -7
  363. package/src/lib/components/Heading.tsx +26 -7
  364. package/src/lib/components/InlineCode.tsx +19 -0
  365. package/src/lib/components/Layout.tsx +9 -7
  366. package/src/lib/components/NotFoundPage.tsx +39 -0
  367. package/src/lib/components/SyntaxHighlight.tsx +27 -19
  368. package/src/lib/components/TopNavigation.tsx +5 -0
  369. package/src/lib/components/context/DevPortalProvider.ts +2 -2
  370. package/src/lib/components/index.ts +21 -3
  371. package/src/lib/core/DevPortalContext.ts +42 -13
  372. package/src/lib/core/plugins.ts +10 -5
  373. package/src/lib/errors/ErrorAlert.tsx +21 -0
  374. package/src/lib/errors/RouterError.tsx +13 -0
  375. package/src/lib/errors/ServerError.tsx +5 -0
  376. package/src/lib/errors/TopLevelError.tsx +8 -0
  377. package/src/lib/oas/graphql/index.ts +2 -2
  378. package/src/lib/oas/parser/index.ts +41 -20
  379. package/src/lib/plugins/{api-key → api-keys}/CreateApiKey.tsx +2 -8
  380. package/src/lib/plugins/{api-key → api-keys}/SettingsApiKeys.tsx +21 -14
  381. package/src/lib/plugins/{api-key → api-keys}/index.tsx +43 -9
  382. package/src/lib/plugins/markdown/MdxPage.tsx +52 -35
  383. package/src/lib/plugins/markdown/Toc.tsx +1 -1
  384. package/src/lib/plugins/markdown/generateRoutes.tsx +16 -6
  385. package/src/lib/plugins/markdown/index.tsx +10 -7
  386. package/src/lib/plugins/openapi/OperationList.tsx +40 -4
  387. package/src/lib/plugins/openapi/OperationListItem.tsx +69 -42
  388. package/src/lib/plugins/openapi/ParameterList.tsx +1 -1
  389. package/src/lib/plugins/openapi/ParameterListItem.tsx +3 -4
  390. package/src/lib/plugins/openapi/{MakeRequest.tsx → PlaygroundDialogWrapper.tsx} +4 -4
  391. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +2 -16
  392. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +3 -1
  393. package/src/lib/plugins/openapi/Route.tsx +21 -0
  394. package/src/lib/plugins/openapi/SchemaListView.tsx +23 -192
  395. package/src/lib/plugins/openapi/SchemaListViewItem.tsx +110 -0
  396. package/src/lib/plugins/openapi/SchemaListViewItemGroup.tsx +63 -0
  397. package/src/lib/plugins/openapi/Sidecar.tsx +15 -10
  398. package/src/lib/plugins/openapi/{Select.tsx → SimpleSelect.tsx} +6 -3
  399. package/src/lib/plugins/openapi/client/createMemoryClient.ts +56 -0
  400. package/src/lib/plugins/openapi/client/createServer.ts +33 -0
  401. package/src/lib/plugins/openapi/{worker/createSharedWorkerClient.ts → client/createWorkerClient.ts} +21 -1
  402. package/src/lib/plugins/openapi/client/interfaces.ts +5 -0
  403. package/src/lib/plugins/openapi/{worker → client}/worker.ts +3 -3
  404. package/src/lib/plugins/openapi/context.tsx +16 -0
  405. package/src/lib/plugins/openapi/index.tsx +59 -52
  406. package/src/lib/plugins/openapi/interfaces.ts +9 -0
  407. package/src/lib/plugins/openapi/playground/Headers.tsx +60 -33
  408. package/src/lib/plugins/openapi/playground/PathParams.tsx +1 -1
  409. package/src/lib/plugins/openapi/playground/Playground.tsx +158 -193
  410. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +34 -0
  411. package/src/lib/plugins/openapi/playground/QueryParams.tsx +7 -2
  412. package/src/lib/plugins/openapi/playground/createUrl.ts +1 -1
  413. package/src/lib/plugins/openapi/util/prose.ts +7 -0
  414. package/src/lib/plugins/openapi-worker.ts +1 -1
  415. package/src/lib/plugins/redirect/index.tsx +2 -2
  416. package/src/lib/ui/Callout.tsx +4 -4
  417. package/src/lib/util/MdxComponents.tsx +2 -12
  418. package/src/lib/util/groupBy.ts +7 -12
  419. package/src/lib/util/logInit.ts +9 -0
  420. package/src/lib/util/objectEntries.ts +5 -0
  421. package/src/lib/util/renderIf.ts +4 -0
  422. package/dist/lib/components/Link.d.ts +0 -1
  423. package/dist/lib/components/Link.js +0 -2
  424. package/dist/lib/components/Link.js.map +0 -1
  425. package/dist/lib/components/Router.d.ts +0 -4
  426. package/dist/lib/components/Router.js +0 -20
  427. package/dist/lib/components/Router.js.map +0 -1
  428. package/dist/lib/core/helmet.d.ts +0 -4
  429. package/dist/lib/core/helmet.js +0 -5
  430. package/dist/lib/core/helmet.js.map +0 -1
  431. package/dist/lib/core/icons.d.ts +0 -1
  432. package/dist/lib/core/icons.js +0 -2
  433. package/dist/lib/core/icons.js.map +0 -1
  434. package/dist/lib/core/router.d.ts +0 -1
  435. package/dist/lib/core/router.js +0 -2
  436. package/dist/lib/core/router.js.map +0 -1
  437. package/dist/lib/plugins/api-key/CreateApiKey.d.ts +0 -5
  438. package/dist/lib/plugins/api-key/CreateApiKey.js.map +0 -1
  439. package/dist/lib/plugins/api-key/SettingsApiKeys.d.ts +0 -5
  440. package/dist/lib/plugins/api-key/SettingsApiKeys.js +0 -38
  441. package/dist/lib/plugins/api-key/SettingsApiKeys.js.map +0 -1
  442. package/dist/lib/plugins/api-key/index.js.map +0 -1
  443. package/dist/lib/plugins/index.d.ts +0 -4
  444. package/dist/lib/plugins/index.js +0 -5
  445. package/dist/lib/plugins/index.js.map +0 -1
  446. package/dist/lib/plugins/openapi/MakeRequest.js.map +0 -1
  447. package/dist/lib/plugins/openapi/Select.js +0 -5
  448. package/dist/lib/plugins/openapi/Select.js.map +0 -1
  449. package/dist/lib/plugins/openapi/worker/createSharedWorkerClient.d.ts +0 -5
  450. package/dist/lib/plugins/openapi/worker/createSharedWorkerClient.js.map +0 -1
  451. package/dist/lib/plugins/openapi/worker/shared-worker.d.ts +0 -1
  452. package/dist/lib/plugins/openapi/worker/shared-worker.js +0 -6
  453. package/dist/lib/plugins/openapi/worker/shared-worker.js.map +0 -1
  454. package/dist/lib/plugins/openapi/worker/worker.js.map +0 -1
  455. package/dist/vite/common.d.ts +0 -1
  456. package/dist/vite/common.js +0 -5
  457. package/dist/vite/common.js.map +0 -1
  458. package/dist/vite/plugin-openapi-worker.d.ts +0 -4
  459. package/dist/vite/plugin-openapi-worker.js +0 -28
  460. package/dist/vite/plugin-openapi-worker.js.map +0 -1
  461. package/lib/Spinner-7LezPqGn.js +0 -8393
  462. package/lib/clerk-Wslx_mPo.js +0 -19685
  463. package/lib/index-DNx3xWa2.js +0 -3461
  464. package/lib/urql-DMlBWUKL.js +0 -1591
  465. package/lib/zudoku.plugins.js +0 -19863
  466. package/src/lib/components/Link.tsx +0 -1
  467. package/src/lib/components/Router.tsx +0 -28
  468. package/src/lib/core/helmet.ts +0 -5
  469. package/src/lib/core/icons.tsx +0 -1
  470. package/src/lib/core/router.tsx +0 -1
  471. package/src/lib/plugins/index.ts +0 -4
  472. package/src/lib/plugins/openapi/worker/shared-worker.ts +0 -5
  473. /package/dist/lib/plugins/{api-key → api-keys}/index.d.ts +0 -0
  474. /package/dist/lib/plugins/openapi/{worker → client}/worker.d.ts +0 -0
@@ -1,15 +1,7 @@
1
- import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
2
1
  import { useMutation } from "@tanstack/react-query";
3
- import { CirclePlayIcon } from "lucide-react";
4
2
  import { Fragment } from "react";
5
3
  import { FormProvider, useForm } from "react-hook-form";
6
4
  import { useApiIdentities } from "../../../components/context/DevPortalProvider.js";
7
- import {
8
- Dialog,
9
- DialogContent,
10
- DialogTitle,
11
- DialogTrigger,
12
- } from "../../../components/Dialog.js";
13
5
  import {
14
6
  Select,
15
7
  SelectContent,
@@ -28,6 +20,8 @@ import { Headers } from "./Headers.js";
28
20
  import { PathParams } from "./PathParams.js";
29
21
  import { QueryParams } from "./QueryParams.js";
30
22
 
23
+ export const NO_IDENTITY = "__none";
24
+
31
25
  function mimeTypeToLanguage(mimeType: string) {
32
26
  const mimeTypeMapping = {
33
27
  "application/json": "json",
@@ -81,17 +75,7 @@ export type PlaygroundForm = {
81
75
  identity?: string;
82
76
  };
83
77
 
84
- const NO_IDENTITY = "__none";
85
-
86
- const Playground = ({
87
- url,
88
- host,
89
- method,
90
- headers = [{ name: "", value: "" }],
91
- queryParams = [],
92
- pathParams = [],
93
- hasParams,
94
- }: {
78
+ export type PlaygroundContentProps = {
95
79
  host: string;
96
80
  url: string;
97
81
  method: string;
@@ -99,7 +83,17 @@ const Playground = ({
99
83
  queryParams?: QueryParam[];
100
84
  pathParams?: PathParam[];
101
85
  hasParams: boolean;
102
- }) => {
86
+ };
87
+
88
+ export const Playground = ({
89
+ host,
90
+ url,
91
+ method,
92
+ headers = [{ name: "", value: "" }],
93
+ queryParams = [],
94
+ pathParams = [],
95
+ hasParams,
96
+ }: PlaygroundContentProps) => {
103
97
  const { register, control, handleSubmit, watch, ...form } =
104
98
  useForm<PlaygroundForm>({
105
99
  defaultValues: {
@@ -121,7 +115,7 @@ const Playground = ({
121
115
  const request = new Request(requestUrl, {
122
116
  method: method.toUpperCase(),
123
117
  headers: Object.fromEntries(
124
- data.pathParams
118
+ data.headers
125
119
  .filter((h) => h.name)
126
120
  .map((header) => [header.name, header.value]),
127
121
  ),
@@ -129,10 +123,9 @@ const Playground = ({
129
123
 
130
124
  if (data.identity !== NO_IDENTITY) {
131
125
  identities.data
132
- .find((i) => i.id === data.identity)
126
+ ?.find((i) => i.id === data.identity)
133
127
  ?.authorizeRequest(request);
134
128
  }
135
-
136
129
  const response = await fetch(request);
137
130
 
138
131
  const body = await response.text();
@@ -182,185 +175,157 @@ const Playground = ({
182
175
  <wbr />
183
176
  </Fragment>
184
177
  ));
185
-
186
178
  return (
187
- <Dialog>
188
- <DialogTrigger asChild>
189
- <CirclePlayIcon
190
- className="cursor-pointer text-primary hover:text-primary/80"
191
- size={16}
192
- />
193
- </DialogTrigger>
194
-
195
- <DialogContent
196
- className="max-w-screen-xl w-full h-5/6 overflow-auto p-0"
197
- aria-describedby={undefined}
198
- >
199
- <VisuallyHidden>
200
- <DialogTitle>Playground</DialogTitle>
201
- </VisuallyHidden>
202
- <FormProvider {...{ register, control, handleSubmit, watch, ...form }}>
203
- <form
204
- onSubmit={handleSubmit((data) => queryMutation.mutateAsync(data))}
205
- >
206
- <div className="grid grid-cols-2 text-sm h-full">
207
- <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">
208
- <div className="flex gap-2 items-stretch">
209
- <div className="flex flex-1 items-center w-full border rounded-md border-border">
210
- <div className="border-r border-border p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono">
211
- {method.toUpperCase()}
212
- </div>
213
- <div className="p-2 font-mono text-xs">
214
- {path}
215
- {urlQueryParams.length > 0 ? "?" : ""}
216
- {urlQueryParams}
179
+ <FormProvider {...{ register, control, handleSubmit, watch, ...form }}>
180
+ <form onSubmit={handleSubmit((data) => queryMutation.mutateAsync(data))}>
181
+ <div className="grid grid-cols-2 text-sm h-full">
182
+ <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">
183
+ <div className="flex gap-2 items-stretch">
184
+ <div className="flex flex-1 items-center w-full border rounded-md border-border">
185
+ <div className="border-r border-border p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono">
186
+ {method.toUpperCase()}
187
+ </div>
188
+ <div className="p-2 font-mono text-xs">
189
+ {path}
190
+ {urlQueryParams.length > 0 ? "?" : ""}
191
+ {urlQueryParams}
192
+ </div>
193
+ </div>
194
+ <Button type="submit" className="h-auto flex gap-1">
195
+ Send
196
+ </Button>
197
+ </div>
198
+ <Tabs defaultValue={hasParams ? "parameters" : "headers"}>
199
+ <div className="flex justify-between">
200
+ <TabsList>
201
+ {hasParams && (
202
+ <TabsTrigger value="parameters">Parameters</TabsTrigger>
203
+ )}
204
+ <TabsTrigger value="headers">
205
+ Headers{" "}
206
+ {formState.headers.length > 0 &&
207
+ `(${formState.headers.length})`}
208
+ </TabsTrigger>
209
+ <TabsTrigger
210
+ value="body"
211
+ disabled={["POST", "PUT", "PATCH", "DELETE"].includes(
212
+ method.toUpperCase(),
213
+ )}
214
+ >
215
+ Body
216
+ </TabsTrigger>
217
+ </TabsList>
218
+ <div className="flex gap-2 items-center">
219
+ Auth:
220
+ <Select
221
+ onValueChange={(value) => form.setValue("identity", value)}
222
+ defaultValue={formState.identity}
223
+ >
224
+ <SelectTrigger className="w-[180px] flex">
225
+ {identities.isPending ? <Spinner /> : <SelectValue />}
226
+ </SelectTrigger>
227
+ <SelectContent align="center">
228
+ <SelectItem value={NO_IDENTITY}>None</SelectItem>
229
+ {identities.data?.map((identity) => (
230
+ <SelectItem key={identity.id} value={identity.id}>
231
+ {identity.label}
232
+ </SelectItem>
233
+ ))}
234
+ </SelectContent>
235
+ </Select>
236
+ </div>
237
+ </div>
238
+ <TabsContent value="headers">
239
+ <Headers control={control} register={register} />
240
+ </TabsContent>
241
+ <TabsContent value="parameters">
242
+ <div className="grid grid-cols-[min-content_1fr_1fr_auto]">
243
+ {pathParams.length > 0 && (
244
+ <div className="font-semibold my-3 col-span-3">
245
+ Path Parameters
217
246
  </div>
218
- </div>
219
- <Button type="submit" className="h-auto flex gap-1">
220
- Send
221
- </Button>
247
+ )}
248
+ <PathParams control={control} register={register} />
249
+ {queryParams.length > 0 && (
250
+ <span className="font-semibold my-3 col-span-3">
251
+ Query Parameters
252
+ </span>
253
+ )}
254
+ <QueryParams control={control} />
222
255
  </div>
223
- <Tabs defaultValue={hasParams ? "parameters" : "headers"}>
224
- <div className="flex justify-between">
225
- <TabsList>
226
- {hasParams && (
227
- <TabsTrigger value="parameters">Parameters</TabsTrigger>
228
- )}
229
- <TabsTrigger value="headers">
230
- Headers{" "}
231
- {formState.headers.length > 0 &&
232
- `(${formState.headers.length})`}
233
- </TabsTrigger>
234
- <TabsTrigger
235
- value="body"
236
- disabled={["POST", "PUT", "PATCH", "DELETE"].includes(
237
- method.toUpperCase(),
238
- )}
239
- >
240
- Body
241
- </TabsTrigger>
242
- </TabsList>
243
- <div className="flex gap-2 items-center">
244
- Auth:
245
- <Select
246
- onValueChange={(value) =>
247
- form.setValue("identity", value)
248
- }
249
- defaultValue={formState.identity}
250
- >
251
- <SelectTrigger className="w-[180px]">
252
- <SelectValue />
253
- </SelectTrigger>
254
- <SelectContent align="center">
255
- <SelectItem value={NO_IDENTITY}>None</SelectItem>
256
- {identities.data.map((identity) => (
257
- <SelectItem key={identity.id} value={identity.id}>
258
- {identity.label}
259
- </SelectItem>
260
- ))}
261
- </SelectContent>
262
- </Select>
256
+ </TabsContent>
257
+ <TabsContent value="body">
258
+ <textarea
259
+ {...register("body")}
260
+ className="border border-border w-full rounded p-2 bg-muted h-40"
261
+ />
262
+ </TabsContent>
263
+ </Tabs>
264
+ </div>
265
+ <div className="flex flex-col gap-4 p-8 bg-muted/70">
266
+ {queryMutation.error ? (
267
+ <div>{queryMutation.error.message}</div>
268
+ ) : queryMutation.data ? (
269
+ <div className="flex flex-col gap-2">
270
+ <div className="flex gap-2">
271
+ <div className="flex text-xs gap-6">
272
+ <div>
273
+ Status: {queryMutation.data.status}{" "}
274
+ {statusCodeMap[queryMutation.data.status] ?? ""}
263
275
  </div>
276
+ <div>Time: {queryMutation.data.time.toFixed(0)}ms</div>
277
+ <div>Size: {queryMutation.data.size} B</div>
264
278
  </div>
265
- <TabsContent value="headers">
266
- <Headers
267
- control={control}
268
- register={register}
269
- headers={formState.headers}
270
- />
271
- </TabsContent>
272
- <TabsContent value="parameters">
273
- <div className="grid grid-cols-[min-content_1fr_1fr_auto]">
274
- {pathParams.length > 0 && (
275
- <div className="font-semibold my-3 col-span-3">
276
- Path Parameters
277
- </div>
278
- )}
279
- <PathParams control={control} register={register} />
280
- {queryParams.length > 0 && (
281
- <span className="font-semibold my-3 col-span-3">
282
- Query Parameters
283
- </span>
284
- )}
285
- <QueryParams control={control} />
286
- </div>
279
+ </div>
280
+ {/*<UrlDisplay host={host} path={url} />*/}
281
+ <Tabs defaultValue="response">
282
+ <TabsList>
283
+ <TabsTrigger value="response">Response</TabsTrigger>
284
+ <TabsTrigger value="headers">
285
+ {headerEntries.length
286
+ ? `Headers (${headerEntries.length})`
287
+ : "No headers"}
288
+ </TabsTrigger>
289
+ </TabsList>
290
+
291
+ <TabsContent value="response">
292
+ <Card className="shadow-none p-4">
293
+ <SyntaxHighlight
294
+ language={lang ?? "json"}
295
+ noBackground
296
+ className="overflow-x-auto "
297
+ code={queryMutation.data.body ?? JSON.stringify("")}
298
+ />
299
+ </Card>
287
300
  </TabsContent>
288
- <TabsContent value="body">
289
- <textarea
290
- {...register("body")}
291
- className="border border-border w-full rounded p-2 bg-muted h-40"
292
- />
301
+ <TabsContent value="headers">
302
+ <Card className="grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4">
303
+ <div className="font-semibold">Key</div>
304
+ <div className="font-semibold">Value</div>
305
+ {headerEntries.map(([key, value]) => (
306
+ <Fragment key={key}>
307
+ <div>{key}</div>
308
+ <div>{value}</div>
309
+ </Fragment>
310
+ ))}
311
+ </Card>
293
312
  </TabsContent>
294
313
  </Tabs>
295
314
  </div>
296
- <div className="flex flex-col gap-4 p-8 bg-muted/70">
297
- {queryMutation.error ? (
298
- <div>{queryMutation.error.message}</div>
299
- ) : queryMutation.data ? (
300
- <div className="flex flex-col gap-2">
301
- <div className="flex gap-2">
302
- <div className="flex text-xs gap-6">
303
- <div>
304
- Status: {queryMutation.data.status}{" "}
305
- {statusCodeMap[queryMutation.data.status] ?? ""}
306
- </div>
307
- <div>Time: {queryMutation.data.time.toFixed(0)}ms</div>
308
- <div>Size: {queryMutation.data.size} B</div>
309
- </div>
310
- </div>
311
- {/*<UrlDisplay host={host} path={url} />*/}
312
- <Tabs defaultValue="response">
313
- <TabsList>
314
- <TabsTrigger value="response">Response</TabsTrigger>
315
- <TabsTrigger value="headers">
316
- {headerEntries.length
317
- ? `Headers (${headerEntries.length})`
318
- : "No headers"}
319
- </TabsTrigger>
320
- </TabsList>
321
-
322
- <TabsContent value="response">
323
- <Card className="shadow-none p-4">
324
- <SyntaxHighlight
325
- language={lang ?? "json"}
326
- noBackground
327
- className="overflow-x-auto "
328
- code={queryMutation.data.body ?? JSON.stringify("")}
329
- />
330
- </Card>
331
- </TabsContent>
332
- <TabsContent value="headers">
333
- <Card className="grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4">
334
- <div className="font-semibold">Key</div>
335
- <div className="font-semibold">Value</div>
336
- {headerEntries.map(([key, value]) => (
337
- <Fragment key={key}>
338
- <div>{key}</div>
339
- <div>{value}</div>
340
- </Fragment>
341
- ))}
342
- </Card>
343
- </TabsContent>
344
- </Tabs>
345
- </div>
346
- ) : (
347
- <div className="grid place-items-center h-full">
348
- <span className="text-[16px] font-semibold text-muted-foreground">
349
- {queryMutation.isPending ? (
350
- <Spinner />
351
- ) : (
352
- "Send a request first to see the response here"
353
- )}
354
- </span>
355
- </div>
356
- )}
315
+ ) : (
316
+ <div className="grid place-items-center h-full">
317
+ <span className="text-[16px] font-semibold text-muted-foreground">
318
+ {queryMutation.isPending ? (
319
+ <Spinner />
320
+ ) : (
321
+ "Send a request first to see the response here"
322
+ )}
323
+ </span>
357
324
  </div>
358
- </div>
359
- </form>
360
- </FormProvider>
361
- </DialogContent>
362
- </Dialog>
325
+ )}
326
+ </div>
327
+ </div>
328
+ </form>
329
+ </FormProvider>
363
330
  );
364
331
  };
365
-
366
- export { Playground };
@@ -0,0 +1,34 @@
1
+ import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
2
+ import { CirclePlayIcon } from "lucide-react";
3
+ import {
4
+ Dialog,
5
+ DialogContent,
6
+ DialogTitle,
7
+ DialogTrigger,
8
+ } from "../../../components/Dialog.js";
9
+ import { Playground, type PlaygroundContentProps } from "./Playground.js";
10
+
11
+ const PlaygroundDialog = (props: PlaygroundContentProps) => {
12
+ return (
13
+ <Dialog>
14
+ <DialogTrigger asChild>
15
+ <CirclePlayIcon
16
+ className="cursor-pointer text-primary hover:text-primary/80"
17
+ size={16}
18
+ />
19
+ </DialogTrigger>
20
+
21
+ <DialogContent
22
+ className="max-w-screen-xl w-full h-5/6 overflow-auto p-0"
23
+ aria-describedby={undefined}
24
+ >
25
+ <VisuallyHidden>
26
+ <DialogTitle>Playground</DialogTitle>
27
+ </VisuallyHidden>
28
+ <Playground {...props} />
29
+ </DialogContent>
30
+ </Dialog>
31
+ );
32
+ };
33
+
34
+ export { PlaygroundDialog };
@@ -5,8 +5,9 @@ import {
5
5
  useFieldArray,
6
6
  useFormContext,
7
7
  } from "react-hook-form";
8
+ import { cn } from "../../../util/cn.js";
8
9
  import { InlineInput } from "./InlineInput.js";
9
- import { PlaygroundForm } from "./Playground.js";
10
+ import type { PlaygroundForm } from "./Playground.js";
10
11
 
11
12
  export const QueryParams = ({
12
13
  control,
@@ -73,7 +74,11 @@ export const QueryParams = ({
73
74
  render={({ field }) => {
74
75
  return (
75
76
  <button
76
- className="hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible"
77
+ type="button"
78
+ className={cn(
79
+ "hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible",
80
+ field.value.length === 0 && "opacity-0 pointer-events-none",
81
+ )}
77
82
  onClick={() => field.onChange("")}
78
83
  >
79
84
  <XIcon size={16} />
@@ -1,4 +1,4 @@
1
- import { PlaygroundForm } from "./Playground.js";
1
+ import type { PlaygroundForm } from "./Playground.js";
2
2
 
3
3
  export const createUrl = (host: string, path: string, data: PlaygroundForm) => {
4
4
  const url = new URL(
@@ -0,0 +1,7 @@
1
+ import { ProseClasses } from "../../../components/Markdown.js";
2
+ import { cn } from "../../../util/cn.js";
3
+
4
+ export const SchemaProseClasses = cn(
5
+ ProseClasses,
6
+ "max-w-full prose-img:max-w-prose",
7
+ );
@@ -1 +1 @@
1
- export { createSharedWorkerClient } from "./openapi/worker/createSharedWorkerClient.js";
1
+ export { createClient } from "./openapi/client/createWorkerClient.js";
@@ -1,4 +1,4 @@
1
- import { Navigate } from "react-router-dom";
1
+ import { redirect } from "react-router-dom";
2
2
  import type { DevPortalPlugin } from "../../core/plugins.js";
3
3
 
4
4
  export type Redirect = {
@@ -14,7 +14,7 @@ export const redirectPlugin = (options: {
14
14
  getRoutes: () =>
15
15
  options.redirects.map(({ from, to, replace }) => ({
16
16
  path: from,
17
- element: <Navigate to={to} replace={replace} />,
17
+ loader: () => redirect(to),
18
18
  })),
19
19
  };
20
20
  };
@@ -1,10 +1,10 @@
1
- import type { ReactNode } from "react";
2
1
  import {
3
2
  AlertTriangleIcon,
4
3
  InfoIcon,
5
4
  LightbulbIcon,
6
5
  ShieldAlertIcon,
7
- } from "../core/icons.js";
6
+ } from "lucide-react";
7
+ import type { ReactNode } from "react";
8
8
  import { cn } from "../util/cn.js";
9
9
 
10
10
  const stylesMap = {
@@ -64,9 +64,9 @@ export const Callout = ({ type, children, title, className }: CalloutProps) => {
64
64
  return (
65
65
  <div
66
66
  className={cn(
67
- "not-prose grid grid-cols-[fit-content_1fr] grid-rows-[fit-content_1fr] gap-x-4 gap-y-2 text-md rounded-md border p-4",
67
+ "not-prose grid grid-cols-[min-content_1fr] grid-rows-[fit-content_1fr] gap-x-4 gap-y-2 text-md rounded-md border p-4",
68
68
  "[&_a]:underline [&_a]:decoration-current [&_a]:decoration-from-font [&_a]:underline-offset-4 hover:[&_a]:decoration-1",
69
- "[&_code]:!bg-transparent [&_code]:!border-none",
69
+ "[&_code]:!bg-gray-50 [&_code]:dark:!bg-gray-800 [&_code]:!border-none",
70
70
  title && "items-center",
71
71
  border,
72
72
  bg,
@@ -1,11 +1,10 @@
1
1
  import { MDXProvider } from "@mdx-js/react";
2
2
  import type { ComponentProps } from "react";
3
-
4
3
  import { Link } from "react-router-dom";
5
4
  import { Heading } from "../components/Heading.js";
5
+ import { InlineCode } from "../components/InlineCode.js";
6
6
  import { SyntaxHighlight } from "../components/SyntaxHighlight.js";
7
7
  import { Callout } from "../ui/Callout.js";
8
- import { cn } from "./cn.js";
9
8
 
10
9
  export type MdxComponentsType = ComponentProps<
11
10
  typeof MDXProvider
@@ -81,15 +80,6 @@ export const MdxComponents = {
81
80
  );
82
81
  }
83
82
 
84
- return (
85
- <code
86
- className={cn(
87
- className,
88
- "font-mono border border-border p-1 py-0.5 rounded bg-border/50 dark:bg-border/70",
89
- )}
90
- >
91
- {children}
92
- </code>
93
- );
83
+ return <InlineCode className={className}>{children}</InlineCode>;
94
84
  },
95
85
  } satisfies MdxComponentsType;
@@ -1,24 +1,19 @@
1
- type MapValuesToKeysIfAllowed<T> = {
2
- [K in keyof T]: T[K] extends PropertyKey ? K : never;
3
- };
4
- type Filter<T> = MapValuesToKeysIfAllowed<T>[keyof T];
5
-
6
1
  export const groupBy = <
7
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
2
  T extends Record<PropertyKey, any>,
9
- Key extends Filter<T>,
3
+ KeySelector extends (item: T) => PropertyKey,
10
4
  >(
11
5
  arr: T[],
12
- key: Key,
13
- ): Record<T[Key], T[]> =>
14
- arr.reduce(
6
+ keySelector: KeySelector,
7
+ ): Partial<Record<ReturnType<KeySelector>, T[]>> => {
8
+ return arr.reduce(
15
9
  (accumulator, val) => {
16
- const groupedKey = val[key];
10
+ const groupedKey = keySelector(val) as ReturnType<KeySelector>;
17
11
  if (!accumulator[groupedKey]) {
18
12
  accumulator[groupedKey] = [];
19
13
  }
20
14
  accumulator[groupedKey].push(val);
21
15
  return accumulator;
22
16
  },
23
- {} as Record<T[Key], T[]>,
17
+ {} as Record<ReturnType<KeySelector>, T[]>,
24
18
  );
19
+ };
@@ -0,0 +1,9 @@
1
+ import log from "loglevel";
2
+
3
+ log.setDefaultLevel("silent");
4
+
5
+ if (import.meta.env.DEV) {
6
+ log.setLevel("debug");
7
+ } else if (localStorage.getItem("ENABLE_DEBUG_LOGS")) {
8
+ log.setLevel("debug");
9
+ }
@@ -0,0 +1,5 @@
1
+ type ValueOf<T> = T[keyof T];
2
+ type Entries<T> = [keyof T, ValueOf<T>][];
3
+
4
+ export const objectEntries = <T extends object>(obj: T): Entries<T> =>
5
+ Object.entries(obj) as Entries<T>;
@@ -0,0 +1,4 @@
1
+ export const renderIf = <G, R>(
2
+ variable: G | undefined | null,
3
+ callback: (variable: G) => R,
4
+ ): R | undefined => (variable ? callback(variable) : undefined);
@@ -1 +0,0 @@
1
- export { Link } from "../core/router.js";
@@ -1,2 +0,0 @@
1
- export { Link } from "../core/router.js";
2
- //# sourceMappingURL=Link.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../../src/lib/components/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,4 +0,0 @@
1
- import { DevPortalPlugin } from "../core/plugins.js";
2
- export declare function Router({ plugins }: {
3
- plugins?: DevPortalPlugin[];
4
- }): import("react/jsx-runtime").JSX.Element;