zudoku 0.1.1-dev.2 → 0.1.1-dev.20

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 (525) hide show
  1. package/cli.js +2 -0
  2. package/dist/app/App.js +22 -0
  3. package/dist/app/App.js.map +1 -0
  4. package/dist/app/main.js +4 -16
  5. package/dist/app/main.js.map +1 -1
  6. package/dist/cli/cmds/dev.js +0 -1
  7. package/dist/cli/cmds/dev.js.map +1 -1
  8. package/dist/cli/common/logger.d.ts +1 -2
  9. package/dist/cli/common/logger.js +2 -4
  10. package/dist/cli/common/logger.js.map +1 -1
  11. package/dist/cli/dev/handler.d.ts +1 -1
  12. package/dist/cli/dev/handler.js +11 -2
  13. package/dist/cli/dev/handler.js.map +1 -1
  14. package/dist/config/config.d.ts +12 -7
  15. package/dist/index.d.ts +2 -6
  16. package/dist/index.js +1 -5
  17. package/dist/index.js.map +1 -1
  18. package/dist/{app → lib}/DevPortal.d.ts +2 -3
  19. package/dist/{app → lib}/DevPortal.js +6 -19
  20. package/dist/lib/DevPortal.js.map +1 -0
  21. package/dist/{app → lib}/Heading.js.map +1 -1
  22. package/dist/lib/Router.d.ts +4 -0
  23. package/dist/lib/Router.js +20 -0
  24. package/dist/lib/Router.js.map +1 -0
  25. package/dist/lib/auth.d.ts +1 -0
  26. package/dist/lib/auth.js +2 -0
  27. package/dist/lib/auth.js.map +1 -0
  28. package/dist/lib/authentication/authentication.js.map +1 -0
  29. package/dist/{app → lib}/authentication/clerk.d.ts +1 -2
  30. package/dist/{app → lib}/authentication/clerk.js +1 -2
  31. package/dist/lib/authentication/clerk.js.map +1 -0
  32. package/dist/{app → lib}/authentication/openid.js +2 -2
  33. package/dist/lib/authentication/openid.js.map +1 -0
  34. package/dist/{app → lib}/components/AnchorLink.js.map +1 -1
  35. package/dist/{app → lib}/components/CategoryHeading.js.map +1 -1
  36. package/dist/lib/components/Dialog.d.ts +19 -0
  37. package/dist/lib/components/Dialog.js +23 -0
  38. package/dist/lib/components/Dialog.js.map +1 -0
  39. package/dist/{app → lib}/components/DynamicIcon.js.map +1 -1
  40. package/dist/{app → lib}/components/Header.d.ts +0 -1
  41. package/dist/{app → lib}/components/Header.js.map +1 -1
  42. package/dist/lib/components/Input.d.ts +5 -0
  43. package/dist/lib/components/Input.js +9 -0
  44. package/dist/lib/components/Input.js.map +1 -0
  45. package/dist/{app → lib}/components/Layout.js.map +1 -1
  46. package/dist/{app → lib}/components/Markdown.js.map +1 -1
  47. package/dist/{app → lib}/components/SyntaxHighlight.js +2 -0
  48. package/dist/lib/components/SyntaxHighlight.js.map +1 -0
  49. package/dist/{app → lib}/components/TopNavigation.js.map +1 -1
  50. package/dist/{app → lib}/components/context/ComponentsContext.js.map +1 -1
  51. package/dist/{app → lib}/components/context/DevPortalProvider.d.ts +0 -1
  52. package/dist/{app → lib}/components/context/DevPortalProvider.js.map +1 -1
  53. package/dist/lib/components/context/PluginSystem.js.map +1 -0
  54. package/dist/{app → lib}/components/context/ThemeContext.js.map +1 -1
  55. package/dist/{app → lib}/components/context/ViewportAnchorContext.js.map +1 -1
  56. package/dist/{app → lib}/components/navigation/SideNavigation.js.map +1 -1
  57. package/dist/{app → lib}/components/navigation/SideNavigationCategory.js.map +1 -1
  58. package/dist/{app → lib}/components/navigation/SideNavigationItem.js.map +1 -1
  59. package/dist/{app → lib}/components/navigation/SideNavigationWrapper.d.ts +1 -2
  60. package/dist/{app → lib}/components/navigation/SideNavigationWrapper.js.map +1 -1
  61. package/dist/{app → lib}/components/navigation/useNavigationCollapsibleState.d.ts +0 -1
  62. package/dist/{app → lib}/components/navigation/useNavigationCollapsibleState.js.map +1 -1
  63. package/dist/{app → lib}/components/navigation/util.js.map +1 -1
  64. package/dist/lib/components.d.ts +3 -0
  65. package/dist/lib/components.js +4 -0
  66. package/dist/lib/components.js.map +1 -0
  67. package/dist/{app → lib}/core/DevPortalContext.js.map +1 -1
  68. package/dist/{app → lib}/core/helmet.js.map +1 -1
  69. package/dist/lib/core/icons.js.map +1 -0
  70. package/dist/{app → lib}/core/plugins.js.map +1 -1
  71. package/dist/lib/core/router.js.map +1 -0
  72. package/dist/lib/core/types/combine.js.map +1 -0
  73. package/dist/{app → lib}/oas/graphql/index.js.map +1 -1
  74. package/dist/{app → lib}/oas/graphql/server.js.map +1 -1
  75. package/dist/{app → lib}/oas/parser/dereference/index.js.map +1 -1
  76. package/dist/{app → lib}/oas/parser/dereference/resolveRef.js.map +1 -1
  77. package/dist/{app → lib}/oas/parser/index.js.map +1 -1
  78. package/dist/{app → lib}/oas/parser/upgrade/index.js.map +1 -1
  79. package/dist/{app → lib}/plugins/api-key/SettingsApiKeys.js.map +1 -1
  80. package/dist/{app → lib}/plugins/api-key/index.js.map +1 -1
  81. package/dist/{app → lib}/plugins/markdown/MdxPage.js.map +1 -1
  82. package/dist/{app → lib}/plugins/markdown/Toc.js.map +1 -1
  83. package/dist/{app → lib}/plugins/markdown/generateRoutes.js.map +1 -1
  84. package/dist/{app → lib}/plugins/markdown/index.d.ts +0 -1
  85. package/dist/{app → lib}/plugins/markdown/index.js.map +1 -1
  86. package/dist/lib/plugins/openapi/ColorizedParam.d.ts +12 -0
  87. package/dist/{app → lib}/plugins/openapi/ColorizedParam.js +10 -5
  88. package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -0
  89. package/dist/lib/plugins/openapi/MakeRequest.js +23 -0
  90. package/dist/lib/plugins/openapi/MakeRequest.js.map +1 -0
  91. package/dist/{app → lib}/plugins/openapi/MethodBadge.js.map +1 -1
  92. package/dist/lib/plugins/openapi/OperationList.d.ts +4 -0
  93. package/dist/{app → lib}/plugins/openapi/OperationList.js +16 -16
  94. package/dist/lib/plugins/openapi/OperationList.js.map +1 -0
  95. package/dist/{app → lib}/plugins/openapi/OperationListItem.d.ts +2 -2
  96. package/dist/{app → lib}/plugins/openapi/OperationListItem.js +2 -2
  97. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -0
  98. package/dist/{app → lib}/plugins/openapi/ParameterList.js.map +1 -1
  99. package/dist/{app → lib}/plugins/openapi/ParameterListItem.js.map +1 -1
  100. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +19 -0
  101. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -0
  102. package/dist/{app → lib}/plugins/openapi/ResponsesSidecarBox.js +1 -1
  103. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -0
  104. package/dist/{app → lib}/plugins/openapi/Select.js.map +1 -1
  105. package/dist/lib/plugins/openapi/Sidecar.js +94 -0
  106. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -0
  107. package/dist/lib/plugins/openapi/SidecarBox.d.ts +8 -0
  108. package/dist/lib/plugins/openapi/SidecarBox.js +6 -0
  109. package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -0
  110. package/dist/lib/plugins/openapi/graphql/fragment-masking.d.ts +19 -0
  111. package/dist/lib/plugins/openapi/graphql/fragment-masking.js +16 -0
  112. package/dist/lib/plugins/openapi/graphql/fragment-masking.js.map +1 -0
  113. package/dist/lib/plugins/openapi/graphql/gql.d.ts +58 -0
  114. package/dist/lib/plugins/openapi/graphql/gql.js +22 -0
  115. package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -0
  116. package/dist/lib/plugins/openapi/graphql/graphql.d.ts +282 -0
  117. package/dist/lib/plugins/openapi/graphql/graphql.js +526 -0
  118. package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -0
  119. package/dist/lib/plugins/openapi/graphql/index.d.ts +2 -0
  120. package/dist/lib/plugins/openapi/graphql/index.js +3 -0
  121. package/dist/lib/plugins/openapi/graphql/index.js.map +1 -0
  122. package/dist/{app → lib}/plugins/openapi/index.d.ts +0 -1
  123. package/dist/{app → lib}/plugins/openapi/index.js +1 -1
  124. package/dist/{app → lib}/plugins/openapi/index.js.map +1 -1
  125. package/dist/lib/plugins/openapi/playground/Playground.d.ts +8 -0
  126. package/dist/lib/plugins/openapi/playground/Playground.js +98 -0
  127. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -0
  128. package/dist/{app → lib}/plugins/openapi/util/generateSchemaExample.js.map +1 -1
  129. package/dist/{app → lib}/plugins/openapi/util/urql.d.ts +0 -1
  130. package/dist/{app → lib}/plugins/openapi/util/urql.js.map +1 -1
  131. package/dist/{app → lib}/plugins/openapi/worker/createSharedWorkerClient.js.map +1 -1
  132. package/dist/lib/plugins/openapi/worker/shared-worker.d.ts +1 -0
  133. package/dist/lib/plugins/openapi/worker/shared-worker.js +6 -0
  134. package/dist/lib/plugins/openapi/worker/shared-worker.js.map +1 -0
  135. package/dist/{app → lib}/plugins/openapi/worker/worker.js.map +1 -1
  136. package/dist/{app → lib}/plugins/redirect/index.js.map +1 -1
  137. package/dist/lib/plugins.d.ts +4 -0
  138. package/dist/lib/plugins.js +6 -0
  139. package/dist/lib/plugins.js.map +1 -0
  140. package/dist/lib/ui/Button.d.ts +11 -0
  141. package/dist/lib/ui/Button.js +34 -0
  142. package/dist/lib/ui/Button.js.map +1 -0
  143. package/dist/{app → lib}/ui/Callout.js.map +1 -1
  144. package/dist/{app → lib}/ui/Card.js +1 -1
  145. package/dist/{app → lib}/ui/Card.js.map +1 -1
  146. package/dist/{app → lib}/ui/Note.js.map +1 -1
  147. package/dist/lib/ui/Tabs.d.ts +7 -0
  148. package/dist/lib/ui/Tabs.js +13 -0
  149. package/dist/lib/ui/Tabs.js.map +1 -0
  150. package/dist/{app → lib}/util/MdxComponents.d.ts +2 -2
  151. package/dist/{app → lib}/util/MdxComponents.js.map +1 -1
  152. package/dist/{app → lib}/util/cn.js.map +1 -1
  153. package/dist/lib/util/createVariantComponent.d.ts +15 -0
  154. package/dist/lib/util/createVariantComponent.js +12 -0
  155. package/dist/lib/util/createVariantComponent.js.map +1 -0
  156. package/dist/lib/util/createWaitForNotify.d.ts +1 -0
  157. package/dist/{app → lib}/util/createWaitForNotify.js.map +1 -1
  158. package/dist/{app → lib}/util/groupBy.js.map +1 -1
  159. package/dist/{app → lib}/util/joinPath.js.map +1 -1
  160. package/dist/{app → lib}/util/pastellize.js.map +1 -1
  161. package/dist/{app → lib}/util/slugify.d.ts +0 -1
  162. package/dist/lib/util/slugify.js.map +1 -0
  163. package/dist/{app → lib}/util/traverseNavigation.js.map +1 -1
  164. package/dist/{app → lib}/util/useScrollToAnchor.js.map +1 -1
  165. package/dist/{app → lib}/util/useScrollToTop.js.map +1 -1
  166. package/dist/ts.d.ts +6 -0
  167. package/dist/ts.js +62 -0
  168. package/dist/ts.js.map +1 -0
  169. package/dist/vite/build.js +2 -8
  170. package/dist/vite/build.js.map +1 -1
  171. package/dist/vite/config.d.ts +8 -2
  172. package/dist/vite/config.js +103 -23
  173. package/dist/vite/config.js.map +1 -1
  174. package/dist/vite/config.test.d.ts +1 -0
  175. package/dist/vite/config.test.js +10 -0
  176. package/dist/vite/config.test.js.map +1 -0
  177. package/dist/vite/dev-server.js +8 -4
  178. package/dist/vite/dev-server.js.map +1 -1
  179. package/dist/vite/html.d.ts +1 -1
  180. package/dist/vite/html.js +2 -3
  181. package/dist/vite/html.js.map +1 -1
  182. package/dist/vite/plugin-api.d.ts +4 -0
  183. package/dist/vite/plugin-api.js +47 -0
  184. package/dist/vite/plugin-api.js.map +1 -0
  185. package/dist/vite/plugin-auth.d.ts +4 -0
  186. package/dist/vite/plugin-auth.js +28 -0
  187. package/dist/vite/plugin-auth.js.map +1 -0
  188. package/dist/vite/plugin-component.d.ts +3 -0
  189. package/dist/vite/plugin-component.js +22 -0
  190. package/dist/vite/plugin-component.js.map +1 -0
  191. package/dist/vite/plugin-config.d.ts +6 -0
  192. package/dist/vite/plugin-config.js +24 -0
  193. package/dist/vite/plugin-config.js.map +1 -0
  194. package/dist/vite/plugin-docs.d.ts +4 -0
  195. package/dist/vite/plugin-docs.js +43 -0
  196. package/dist/vite/plugin-docs.js.map +1 -0
  197. package/dist/vite/plugin-docs.test.d.ts +1 -0
  198. package/dist/vite/plugin-docs.test.js +30 -0
  199. package/dist/vite/plugin-docs.test.js.map +1 -0
  200. package/dist/vite/plugin-html.d.ts +3 -0
  201. package/dist/vite/plugin-html.js +47 -0
  202. package/dist/vite/plugin-html.js.map +1 -0
  203. package/dist/vite/plugin-mdx.d.ts +8 -0
  204. package/dist/vite/plugin-mdx.js +61 -0
  205. package/dist/vite/plugin-mdx.js.map +1 -0
  206. package/dist/vite/plugin-metadata.d.ts +6 -0
  207. package/dist/vite/plugin-metadata.js +24 -0
  208. package/dist/vite/plugin-metadata.js.map +1 -0
  209. package/dist/vite/plugin.d.ts +2 -6
  210. package/dist/vite/plugin.js +14 -104
  211. package/dist/vite/plugin.js.map +1 -1
  212. package/lib/DevPortal-DqcnbwLT.js +12967 -0
  213. package/lib/assets/index-BPdJm2ty.js +4764 -0
  214. package/lib/assets/worker-CnXQsqxH.js +14511 -0
  215. package/lib/prism-bash.min-DadFsM4Z.js +6 -0
  216. package/lib/prism-java.min-d5iT_mOd.js +6 -0
  217. package/lib/prism-json.min-B1GJqK1k.js +1 -0
  218. package/lib/prism-markup-templating-DZrrEs0A.js +61 -0
  219. package/lib/prism-php.min-o7FpoMP_.js +10 -0
  220. package/lib/prism-ruby.min-C7LwcKyz.js +9 -0
  221. package/lib/urql-B7mLfVog.js +1611 -0
  222. package/lib/zudoku.auth.js +31 -0
  223. package/lib/zudoku.components.js +6 -0
  224. package/lib/zudoku.openapi-worker.js +143 -0
  225. package/lib/zudoku.plugins.js +15650 -0
  226. package/package.json +53 -35
  227. package/src/app/App.tsx +33 -0
  228. package/src/app/main.tsx +6 -19
  229. package/src/cli/build/handler.ts +14 -0
  230. package/src/cli/cli.ts +77 -0
  231. package/src/cli/cmds/build.ts +24 -0
  232. package/src/cli/cmds/dev.ts +29 -0
  233. package/src/cli/common/analytics/lib.ts +89 -0
  234. package/src/cli/common/constants.ts +10 -0
  235. package/src/cli/common/logger.ts +5 -0
  236. package/src/cli/common/machine-id/lib.ts +85 -0
  237. package/src/cli/common/outdated.ts +102 -0
  238. package/src/cli/common/output.ts +86 -0
  239. package/src/cli/common/utils/box.license.txt +202 -0
  240. package/src/cli/common/utils/box.ts +116 -0
  241. package/src/cli/common/utils/ports.ts +21 -0
  242. package/src/cli/common/validators/lib.ts +43 -0
  243. package/src/cli/common/xdg/lib.ts +36 -0
  244. package/src/cli/dev/handler.ts +42 -0
  245. package/src/config/config.ts +56 -0
  246. package/src/index.ts +8 -0
  247. package/src/{app → lib}/DevPortal.tsx +7 -29
  248. package/src/lib/Router.tsx +28 -0
  249. package/src/lib/auth.ts +1 -0
  250. package/src/{app → lib}/authentication/clerk.ts +1 -3
  251. package/src/lib/components/Dialog.tsx +119 -0
  252. package/src/lib/components/Input.tsx +24 -0
  253. package/src/{app → lib}/components/SyntaxHighlight.tsx +2 -0
  254. package/src/lib/components.ts +3 -0
  255. package/src/{app → lib}/plugins/openapi/ColorizedParam.tsx +18 -9
  256. package/src/{app → lib}/plugins/openapi/MakeRequest.tsx +19 -0
  257. package/src/{app → lib}/plugins/openapi/OperationList.tsx +20 -22
  258. package/src/{app → lib}/plugins/openapi/OperationListItem.tsx +3 -3
  259. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +51 -0
  260. package/src/{app → lib}/plugins/openapi/ResponsesSidecarBox.tsx +1 -1
  261. package/src/{app → lib}/plugins/openapi/Sidecar.tsx +81 -20
  262. package/src/lib/plugins/openapi/SidecarBox.tsx +36 -0
  263. package/src/lib/plugins/openapi/graphql/fragment-masking.ts +111 -0
  264. package/src/lib/plugins/openapi/graphql/gql.ts +70 -0
  265. package/src/lib/plugins/openapi/graphql/graphql.ts +795 -0
  266. package/src/lib/plugins/openapi/graphql/index.ts +2 -0
  267. package/src/{app → lib}/plugins/openapi/index.tsx +6 -2
  268. package/src/lib/plugins/openapi/playground/Playground.tsx +309 -0
  269. package/src/lib/plugins/openapi/queries.graphql +6 -0
  270. package/src/lib/plugins/openapi/worker/shared-worker.ts +5 -0
  271. package/src/lib/plugins.ts +5 -0
  272. package/src/lib/ui/Button.tsx +56 -0
  273. package/src/{app → lib}/ui/Card.tsx +1 -1
  274. package/src/lib/ui/Tabs.tsx +52 -0
  275. package/src/lib/util/createVariantComponent.tsx +30 -0
  276. package/src/ts.ts +94 -0
  277. package/src/types.d.ts +24 -0
  278. package/src/vite/build.ts +33 -0
  279. package/src/vite/config.test.ts +10 -0
  280. package/src/vite/config.ts +183 -0
  281. package/src/vite/dev-server.ts +64 -0
  282. package/src/vite/html.ts +37 -0
  283. package/src/vite/plugin-api.ts +57 -0
  284. package/src/vite/plugin-auth.ts +32 -0
  285. package/src/vite/plugin-component.ts +26 -0
  286. package/src/vite/plugin-config.ts +31 -0
  287. package/src/vite/plugin-docs.test.ts +32 -0
  288. package/src/vite/plugin-docs.ts +52 -0
  289. package/src/vite/plugin-html.ts +50 -0
  290. package/src/vite/plugin-mdx.ts +74 -0
  291. package/src/vite/plugin-metadata.ts +30 -0
  292. package/src/vite/plugin.ts +23 -0
  293. package/dist/app/DevPortal.js.map +0 -1
  294. package/dist/app/app.js +0 -69
  295. package/dist/app/app.js.map +0 -1
  296. package/dist/app/authentication/authentication.js.map +0 -1
  297. package/dist/app/authentication/clerk.js.map +0 -1
  298. package/dist/app/authentication/openid.js.map +0 -1
  299. package/dist/app/components/SyntaxHighlight.js.map +0 -1
  300. package/dist/app/components/context/PluginSystem.js.map +0 -1
  301. package/dist/app/config.d.ts +0 -3
  302. package/dist/app/config.js +0 -9
  303. package/dist/app/config.js.map +0 -1
  304. package/dist/app/core/icons.js.map +0 -1
  305. package/dist/app/core/router.js.map +0 -1
  306. package/dist/app/core/types/combine.js.map +0 -1
  307. package/dist/app/markdowns.d.ts +0 -3
  308. package/dist/app/markdowns.js +0 -5
  309. package/dist/app/markdowns.js.map +0 -1
  310. package/dist/app/plugins/openapi/ColorizedParam.d.ts +0 -8
  311. package/dist/app/plugins/openapi/ColorizedParam.js.map +0 -1
  312. package/dist/app/plugins/openapi/MakeRequest.js +0 -11
  313. package/dist/app/plugins/openapi/MakeRequest.js.map +0 -1
  314. package/dist/app/plugins/openapi/OperationList.d.ts +0 -47
  315. package/dist/app/plugins/openapi/OperationList.js.map +0 -1
  316. package/dist/app/plugins/openapi/OperationListItem.js.map +0 -1
  317. package/dist/app/plugins/openapi/RequestBodySidecarBox.js +0 -19
  318. package/dist/app/plugins/openapi/RequestBodySidecarBox.js.map +0 -1
  319. package/dist/app/plugins/openapi/ResponsesSidecarBox.js.map +0 -1
  320. package/dist/app/plugins/openapi/Sidecar.js +0 -39
  321. package/dist/app/plugins/openapi/Sidecar.js.map +0 -1
  322. package/dist/app/plugins/openapi/SidecarBox.d.ts +0 -10
  323. package/dist/app/plugins/openapi/SidecarBox.js +0 -8
  324. package/dist/app/plugins/openapi/SidecarBox.js.map +0 -1
  325. package/dist/app/plugins/openapi/graphql/index.d.ts +0 -836
  326. package/dist/app/plugins/openapi/graphql/index.js +0 -4
  327. package/dist/app/plugins/openapi/graphql/index.js.map +0 -1
  328. package/dist/app/plugins/openapi/util/getCode.d.ts +0 -2
  329. package/dist/app/plugins/openapi/util/getCode.js +0 -54
  330. package/dist/app/plugins/openapi/util/getCode.js.map +0 -1
  331. package/dist/app/util/createWaitForNotify.d.ts +0 -1
  332. package/dist/app/util/slugify.js.map +0 -1
  333. package/dist/auth.d.ts +0 -2
  334. package/dist/auth.js +0 -3
  335. package/dist/auth.js.map +0 -1
  336. package/dist/plugins.d.ts +0 -4
  337. package/dist/plugins.js +0 -6
  338. package/dist/plugins.js.map +0 -1
  339. package/src/app/app.tsx +0 -85
  340. package/src/app/config.ts +0 -20
  341. package/src/app/markdowns.ts +0 -7
  342. package/src/app/plugins/openapi/RequestBodySidecarBox.tsx +0 -48
  343. package/src/app/plugins/openapi/SidecarBox.tsx +0 -35
  344. package/src/app/plugins/openapi/graphql/env.d.ts +0 -48
  345. package/src/app/plugins/openapi/graphql/index.ts +0 -13
  346. package/src/app/plugins/openapi/util/getCode.tsx +0 -69
  347. /package/dist/app/{app.d.ts → App.d.ts} +0 -0
  348. /package/dist/{app → lib}/Heading.d.ts +0 -0
  349. /package/dist/{app → lib}/Heading.js +0 -0
  350. /package/dist/{app → lib}/authentication/authentication.d.ts +0 -0
  351. /package/dist/{app → lib}/authentication/authentication.js +0 -0
  352. /package/dist/{app → lib}/authentication/openid.d.ts +0 -0
  353. /package/dist/{app → lib}/components/AnchorLink.d.ts +0 -0
  354. /package/dist/{app → lib}/components/AnchorLink.js +0 -0
  355. /package/dist/{app → lib}/components/CategoryHeading.d.ts +0 -0
  356. /package/dist/{app → lib}/components/CategoryHeading.js +0 -0
  357. /package/dist/{app → lib}/components/DynamicIcon.d.ts +0 -0
  358. /package/dist/{app → lib}/components/DynamicIcon.js +0 -0
  359. /package/dist/{app → lib}/components/Header.js +0 -0
  360. /package/dist/{app → lib}/components/Layout.d.ts +0 -0
  361. /package/dist/{app → lib}/components/Layout.js +0 -0
  362. /package/dist/{app → lib}/components/Markdown.d.ts +0 -0
  363. /package/dist/{app → lib}/components/Markdown.js +0 -0
  364. /package/dist/{app → lib}/components/SyntaxHighlight.d.ts +0 -0
  365. /package/dist/{app → lib}/components/TopNavigation.d.ts +0 -0
  366. /package/dist/{app → lib}/components/TopNavigation.js +0 -0
  367. /package/dist/{app → lib}/components/context/ComponentsContext.d.ts +0 -0
  368. /package/dist/{app → lib}/components/context/ComponentsContext.js +0 -0
  369. /package/dist/{app → lib}/components/context/DevPortalProvider.js +0 -0
  370. /package/dist/{app → lib}/components/context/PluginSystem.d.ts +0 -0
  371. /package/dist/{app → lib}/components/context/PluginSystem.js +0 -0
  372. /package/dist/{app → lib}/components/context/ThemeContext.d.ts +0 -0
  373. /package/dist/{app → lib}/components/context/ThemeContext.js +0 -0
  374. /package/dist/{app → lib}/components/context/ViewportAnchorContext.d.ts +0 -0
  375. /package/dist/{app → lib}/components/context/ViewportAnchorContext.js +0 -0
  376. /package/dist/{app → lib}/components/navigation/SideNavigation.d.ts +0 -0
  377. /package/dist/{app → lib}/components/navigation/SideNavigation.js +0 -0
  378. /package/dist/{app → lib}/components/navigation/SideNavigationCategory.d.ts +0 -0
  379. /package/dist/{app → lib}/components/navigation/SideNavigationCategory.js +0 -0
  380. /package/dist/{app → lib}/components/navigation/SideNavigationItem.d.ts +0 -0
  381. /package/dist/{app → lib}/components/navigation/SideNavigationItem.js +0 -0
  382. /package/dist/{app → lib}/components/navigation/SideNavigationWrapper.js +0 -0
  383. /package/dist/{app → lib}/components/navigation/useNavigationCollapsibleState.js +0 -0
  384. /package/dist/{app → lib}/components/navigation/util.d.ts +0 -0
  385. /package/dist/{app → lib}/components/navigation/util.js +0 -0
  386. /package/dist/{app → lib}/core/DevPortalContext.d.ts +0 -0
  387. /package/dist/{app → lib}/core/DevPortalContext.js +0 -0
  388. /package/dist/{app → lib}/core/helmet.d.ts +0 -0
  389. /package/dist/{app → lib}/core/helmet.js +0 -0
  390. /package/dist/{app → lib}/core/icons.d.ts +0 -0
  391. /package/dist/{app → lib}/core/icons.js +0 -0
  392. /package/dist/{app → lib}/core/plugins.d.ts +0 -0
  393. /package/dist/{app → lib}/core/plugins.js +0 -0
  394. /package/dist/{app → lib}/core/router.d.ts +0 -0
  395. /package/dist/{app → lib}/core/router.js +0 -0
  396. /package/dist/{app → lib}/core/types/combine.d.ts +0 -0
  397. /package/dist/{app → lib}/core/types/combine.js +0 -0
  398. /package/dist/{app → lib}/oas/graphql/index.d.ts +0 -0
  399. /package/dist/{app → lib}/oas/graphql/index.js +0 -0
  400. /package/dist/{app → lib}/oas/graphql/server.d.ts +0 -0
  401. /package/dist/{app → lib}/oas/graphql/server.js +0 -0
  402. /package/dist/{app → lib}/oas/parser/dereference/index.d.ts +0 -0
  403. /package/dist/{app → lib}/oas/parser/dereference/index.js +0 -0
  404. /package/dist/{app → lib}/oas/parser/dereference/resolveRef.d.ts +0 -0
  405. /package/dist/{app → lib}/oas/parser/dereference/resolveRef.js +0 -0
  406. /package/dist/{app → lib}/oas/parser/index.d.ts +0 -0
  407. /package/dist/{app → lib}/oas/parser/index.js +0 -0
  408. /package/dist/{app → lib}/oas/parser/upgrade/index.d.ts +0 -0
  409. /package/dist/{app → lib}/oas/parser/upgrade/index.js +0 -0
  410. /package/dist/{app → lib}/plugins/api-key/SettingsApiKeys.d.ts +0 -0
  411. /package/dist/{app → lib}/plugins/api-key/SettingsApiKeys.js +0 -0
  412. /package/dist/{app → lib}/plugins/api-key/index.d.ts +0 -0
  413. /package/dist/{app → lib}/plugins/api-key/index.js +0 -0
  414. /package/dist/{app → lib}/plugins/markdown/MdxPage.d.ts +0 -0
  415. /package/dist/{app → lib}/plugins/markdown/MdxPage.js +0 -0
  416. /package/dist/{app → lib}/plugins/markdown/Toc.d.ts +0 -0
  417. /package/dist/{app → lib}/plugins/markdown/Toc.js +0 -0
  418. /package/dist/{app → lib}/plugins/markdown/generateRoutes.d.ts +0 -0
  419. /package/dist/{app → lib}/plugins/markdown/generateRoutes.js +0 -0
  420. /package/dist/{app → lib}/plugins/markdown/index.js +0 -0
  421. /package/dist/{app → lib}/plugins/openapi/MakeRequest.d.ts +0 -0
  422. /package/dist/{app → lib}/plugins/openapi/MethodBadge.d.ts +0 -0
  423. /package/dist/{app → lib}/plugins/openapi/MethodBadge.js +0 -0
  424. /package/dist/{app → lib}/plugins/openapi/ParameterList.d.ts +0 -0
  425. /package/dist/{app → lib}/plugins/openapi/ParameterList.js +0 -0
  426. /package/dist/{app → lib}/plugins/openapi/ParameterListItem.d.ts +0 -0
  427. /package/dist/{app → lib}/plugins/openapi/ParameterListItem.js +0 -0
  428. /package/dist/{app → lib}/plugins/openapi/RequestBodySidecarBox.d.ts +0 -0
  429. /package/dist/{app → lib}/plugins/openapi/ResponsesSidecarBox.d.ts +0 -0
  430. /package/dist/{app → lib}/plugins/openapi/Select.d.ts +0 -0
  431. /package/dist/{app → lib}/plugins/openapi/Select.js +0 -0
  432. /package/dist/{app → lib}/plugins/openapi/Sidecar.d.ts +0 -0
  433. /package/dist/{app → lib}/plugins/openapi/util/generateSchemaExample.d.ts +0 -0
  434. /package/dist/{app → lib}/plugins/openapi/util/generateSchemaExample.js +0 -0
  435. /package/dist/{app → lib}/plugins/openapi/util/urql.js +0 -0
  436. /package/dist/{app → lib}/plugins/openapi/worker/createSharedWorkerClient.d.ts +0 -0
  437. /package/dist/{app → lib}/plugins/openapi/worker/createSharedWorkerClient.js +0 -0
  438. /package/dist/{app → lib}/plugins/openapi/worker/worker.d.ts +0 -0
  439. /package/dist/{app → lib}/plugins/openapi/worker/worker.js +0 -0
  440. /package/dist/{app → lib}/plugins/redirect/index.d.ts +0 -0
  441. /package/dist/{app → lib}/plugins/redirect/index.js +0 -0
  442. /package/dist/{app → lib}/ui/Callout.d.ts +0 -0
  443. /package/dist/{app → lib}/ui/Callout.js +0 -0
  444. /package/dist/{app → lib}/ui/Card.d.ts +0 -0
  445. /package/dist/{app → lib}/ui/Note.d.ts +0 -0
  446. /package/dist/{app → lib}/ui/Note.js +0 -0
  447. /package/dist/{app → lib}/util/MdxComponents.js +0 -0
  448. /package/dist/{app → lib}/util/cn.d.ts +0 -0
  449. /package/dist/{app → lib}/util/cn.js +0 -0
  450. /package/dist/{app → lib}/util/createWaitForNotify.js +0 -0
  451. /package/dist/{app → lib}/util/groupBy.d.ts +0 -0
  452. /package/dist/{app → lib}/util/groupBy.js +0 -0
  453. /package/dist/{app → lib}/util/joinPath.d.ts +0 -0
  454. /package/dist/{app → lib}/util/joinPath.js +0 -0
  455. /package/dist/{app → lib}/util/pastellize.d.ts +0 -0
  456. /package/dist/{app → lib}/util/pastellize.js +0 -0
  457. /package/dist/{app → lib}/util/slugify.js +0 -0
  458. /package/dist/{app → lib}/util/traverseNavigation.d.ts +0 -0
  459. /package/dist/{app → lib}/util/traverseNavigation.js +0 -0
  460. /package/dist/{app → lib}/util/useScrollToAnchor.d.ts +0 -0
  461. /package/dist/{app → lib}/util/useScrollToAnchor.js +0 -0
  462. /package/dist/{app → lib}/util/useScrollToTop.d.ts +0 -0
  463. /package/dist/{app → lib}/util/useScrollToTop.js +0 -0
  464. /package/src/{app → lib}/Heading.tsx +0 -0
  465. /package/src/{app → lib}/authentication/authentication.ts +0 -0
  466. /package/src/{app → lib}/authentication/openid.ts +0 -0
  467. /package/src/{app → lib}/components/AnchorLink.tsx +0 -0
  468. /package/src/{app → lib}/components/CategoryHeading.tsx +0 -0
  469. /package/src/{app → lib}/components/DynamicIcon.tsx +0 -0
  470. /package/src/{app → lib}/components/Header.tsx +0 -0
  471. /package/src/{app → lib}/components/Layout.tsx +0 -0
  472. /package/src/{app → lib}/components/Markdown.tsx +0 -0
  473. /package/src/{app → lib}/components/TopNavigation.tsx +0 -0
  474. /package/src/{app → lib}/components/context/ComponentsContext.tsx +0 -0
  475. /package/src/{app → lib}/components/context/DevPortalProvider.ts +0 -0
  476. /package/src/{app → lib}/components/context/PluginSystem.ts +0 -0
  477. /package/src/{app → lib}/components/context/ThemeContext.tsx +0 -0
  478. /package/src/{app → lib}/components/context/ViewportAnchorContext.tsx +0 -0
  479. /package/src/{app → lib}/components/navigation/SideNavigation.tsx +0 -0
  480. /package/src/{app → lib}/components/navigation/SideNavigationCategory.tsx +0 -0
  481. /package/src/{app → lib}/components/navigation/SideNavigationItem.tsx +0 -0
  482. /package/src/{app → lib}/components/navigation/SideNavigationWrapper.tsx +0 -0
  483. /package/src/{app → lib}/components/navigation/useNavigationCollapsibleState.ts +0 -0
  484. /package/src/{app → lib}/components/navigation/util.ts +0 -0
  485. /package/src/{app → lib}/core/DevPortalContext.ts +0 -0
  486. /package/src/{app → lib}/core/helmet.ts +0 -0
  487. /package/src/{app → lib}/core/icons.tsx +0 -0
  488. /package/src/{app → lib}/core/plugins.ts +0 -0
  489. /package/src/{app → lib}/core/router.tsx +0 -0
  490. /package/src/{app → lib}/core/types/combine.ts +0 -0
  491. /package/src/{app → lib}/oas/graphql/index.ts +0 -0
  492. /package/src/{app → lib}/oas/graphql/server.ts +0 -0
  493. /package/src/{app → lib}/oas/parser/dereference/index.ts +0 -0
  494. /package/src/{app → lib}/oas/parser/dereference/resolveRef.ts +0 -0
  495. /package/src/{app → lib}/oas/parser/index.ts +0 -0
  496. /package/src/{app → lib}/oas/parser/schemas/v3.0.json +0 -0
  497. /package/src/{app → lib}/oas/parser/schemas/v3.1.json +0 -0
  498. /package/src/{app → lib}/oas/parser/upgrade/index.ts +0 -0
  499. /package/src/{app → lib}/plugins/api-key/SettingsApiKeys.tsx +0 -0
  500. /package/src/{app → lib}/plugins/api-key/index.tsx +0 -0
  501. /package/src/{app → lib}/plugins/markdown/MdxPage.tsx +0 -0
  502. /package/src/{app → lib}/plugins/markdown/Toc.tsx +0 -0
  503. /package/src/{app → lib}/plugins/markdown/generateRoutes.tsx +0 -0
  504. /package/src/{app → lib}/plugins/markdown/index.tsx +0 -0
  505. /package/src/{app → lib}/plugins/openapi/MethodBadge.tsx +0 -0
  506. /package/src/{app → lib}/plugins/openapi/ParameterList.tsx +0 -0
  507. /package/src/{app → lib}/plugins/openapi/ParameterListItem.tsx +0 -0
  508. /package/src/{app → lib}/plugins/openapi/Select.tsx +0 -0
  509. /package/src/{app → lib}/plugins/openapi/util/generateSchemaExample.ts +0 -0
  510. /package/src/{app → lib}/plugins/openapi/util/urql.ts +0 -0
  511. /package/src/{app → lib}/plugins/openapi/worker/createSharedWorkerClient.ts +0 -0
  512. /package/src/{app → lib}/plugins/openapi/worker/worker.ts +0 -0
  513. /package/src/{app → lib}/plugins/redirect/index.tsx +0 -0
  514. /package/src/{app → lib}/ui/Callout.tsx +0 -0
  515. /package/src/{app → lib}/ui/Note.tsx +0 -0
  516. /package/src/{app → lib}/util/MdxComponents.tsx +0 -0
  517. /package/src/{app → lib}/util/cn.ts +0 -0
  518. /package/src/{app → lib}/util/createWaitForNotify.ts +0 -0
  519. /package/src/{app → lib}/util/groupBy.ts +0 -0
  520. /package/src/{app → lib}/util/joinPath.tsx +0 -0
  521. /package/src/{app → lib}/util/pastellize.ts +0 -0
  522. /package/src/{app → lib}/util/slugify.ts +0 -0
  523. /package/src/{app → lib}/util/traverseNavigation.ts +0 -0
  524. /package/src/{app → lib}/util/useScrollToAnchor.ts +0 -0
  525. /package/src/{app → lib}/util/useScrollToTop.ts +0 -0
@@ -0,0 +1,183 @@
1
+ import autoprefixer from "autoprefixer";
2
+ import esbuild from "esbuild";
3
+ import { stat } from "node:fs/promises";
4
+ import path from "node:path";
5
+ import tailwindcss from "tailwindcss";
6
+ import { InlineConfig, LogLevel } from "vite";
7
+ import tailwindConfig from "../app/tailwind.js";
8
+ import { logger } from "../cli/common/logger.js";
9
+ import { isPortAvailable } from "../cli/common/utils/ports.js";
10
+ import { ZudokuConfig } from "../config/config.js";
11
+ import viteComponentPlugin from "./plugin-component.js";
12
+ import vitePlugin from "./plugin.js";
13
+
14
+ const extensions = ["js", "jsx", "ts", "tsx", "mjs"];
15
+
16
+ export interface ZudokuViteConfig extends InlineConfig {
17
+ root: string;
18
+ }
19
+
20
+ const fileExists = (path: string) =>
21
+ stat(path)
22
+ .then(() => true)
23
+ .catch(() => false);
24
+
25
+ export async function loadZuploConfig(rootDir: string): Promise<ZudokuConfig> {
26
+ for (const ext of extensions) {
27
+ const fileName = `zudoku.config.${ext}`;
28
+ const configPath = path.join(rootDir, fileName);
29
+
30
+ try {
31
+ if (await fileExists(configPath)) {
32
+ logger.info(`Loading zudoku.config file: ${configPath}`);
33
+ const config = await loadConfig(rootDir, fileName);
34
+ return config.default as ZudokuConfig;
35
+ }
36
+ } catch (e) {
37
+ logger.error(e);
38
+ }
39
+ }
40
+
41
+ // Default config
42
+ logger.warn("No zudoku.config file found");
43
+ return {};
44
+ }
45
+
46
+ function getModuleDir() {
47
+ // NOTE: This is relative to the /dist folder because the dev server
48
+ // runs the compiled JS files, but vite uses the raw TS files
49
+ return new URL("../../", import.meta.url).pathname;
50
+ }
51
+
52
+ export function getAppMainTsxPath() {
53
+ const modDir = getModuleDir();
54
+ return path.join(modDir, "src", "app", "main.tsx");
55
+ }
56
+
57
+ export async function getViteConfig({
58
+ dir,
59
+ mode,
60
+ }: {
61
+ dir: string;
62
+ mode: "dev" | "build";
63
+ }): Promise<ZudokuViteConfig> {
64
+ const rootDir = path.resolve(process.cwd(), dir);
65
+ const moduleDir = getModuleDir();
66
+ const config = await loadZuploConfig(rootDir);
67
+
68
+ let websocketPort = 9800;
69
+ while (
70
+ !(await isPortAvailable("localhost", websocketPort)) &&
71
+ websocketPort < 9999
72
+ ) {
73
+ websocketPort++;
74
+ }
75
+
76
+ const viteConfig: ZudokuViteConfig = {
77
+ root: rootDir,
78
+ appType: "custom",
79
+ configFile: false,
80
+ clearScreen: false,
81
+ logLevel: (process.env.LOG_LEVEL || "info") as LogLevel,
82
+ customLogger: logger,
83
+ envPrefix: "PUBLIC_",
84
+ worker: {
85
+ format: "es",
86
+ },
87
+ server: {
88
+ middlewareMode: true,
89
+ open: true,
90
+ hmr: {
91
+ port: websocketPort,
92
+ },
93
+ watch: {
94
+ ignored: [
95
+ `${rootDir}/dist`,
96
+ `${rootDir}/lib`,
97
+ `${rootDir}/.git`,
98
+ `${rootDir}/node_modules`,
99
+ `${rootDir}/zuplo.config.ts`,
100
+ ],
101
+ },
102
+ // sourcemapIgnoreList: (sourcePath) => {
103
+ // return (
104
+ // sourcePath.includes("node_modules/openapi-types/") ||
105
+ // sourcePath.includes("node_modules/value-or-promise/")
106
+ // );
107
+ // },
108
+ },
109
+ build: {
110
+ outDir: path.resolve(rootDir, "dist"),
111
+ rollupOptions: {
112
+ // external: ["@mdx-js/react"],
113
+ input: mode === "build" ? "zudoku/app/main.tsx" : undefined,
114
+ },
115
+ },
116
+ optimizeDeps: {
117
+ entries: [getAppMainTsxPath()],
118
+ exclude: ["zudoku/open-api-worker"],
119
+ include: [
120
+ "hast-util-to-jsx-runtime > style-to-object",
121
+ "debug",
122
+ "extend",
123
+ "stringify-object",
124
+ "url",
125
+ "@zudoku/httpsnippet > qs",
126
+ "react-fast-compare",
127
+ "invariant",
128
+ "shallowequal",
129
+ "slugify",
130
+ "zustand",
131
+ ],
132
+ },
133
+ plugins: [vitePlugin({ ...config, rootDir }), viteComponentPlugin()],
134
+ css: {
135
+ postcss: {
136
+ plugins: [
137
+ tailwindcss({
138
+ ...tailwindConfig,
139
+ content: [
140
+ `${moduleDir}/src/**/*.{js,ts,jsx,tsx,md,mdx}`,
141
+ // Tailwind seems to crash if it tries to parse compiled .js files
142
+ // as a workaround, we will just ship the source file and use those
143
+ // `${moduleDir}/lib/**/*.{js,ts,jsx,tsx,md,mdx}`,
144
+ `${rootDir}/src/**/*.{js,ts,jsx,tsx,md,mdx}`,
145
+ ],
146
+ }),
147
+ autoprefixer,
148
+ ],
149
+ },
150
+ },
151
+ };
152
+
153
+ return viteConfig;
154
+ }
155
+
156
+ export async function loadConfig(rootPath: string, fileName: string) {
157
+ const compiledFilepath = path.join(
158
+ rootPath,
159
+ "node_modules",
160
+ ".zudoku",
161
+ "zudoku.config.mjs",
162
+ );
163
+ const filepath = path.join(rootPath, fileName);
164
+ try {
165
+ await esbuild.build({
166
+ entryPoints: [filepath],
167
+ bundle: true,
168
+ keepNames: true,
169
+ treeShaking: true,
170
+ minifyIdentifiers: false,
171
+ minifySyntax: false,
172
+ minifyWhitespace: false,
173
+ platform: "node",
174
+ target: "es2022",
175
+ format: "esm",
176
+ outfile: compiledFilepath,
177
+ });
178
+ } catch (error) {
179
+ error.message = `TypeScript Error in ${filepath}:\n${error.message}`;
180
+ throw error;
181
+ }
182
+ return await import(compiledFilepath);
183
+ }
@@ -0,0 +1,64 @@
1
+ import express from "express";
2
+ import { Server } from "node:http";
3
+ import { createServer as createViteServer } from "vite";
4
+
5
+ import { createGraphQLServer } from "../lib/oas/graphql/index.js";
6
+ import { getAppMainTsxPath, getViteConfig } from "./config.js";
7
+ import { getDevHtml } from "./html.js";
8
+
9
+ export class DevServer {
10
+ private server: Server | undefined;
11
+
12
+ constructor(private options: { port: number; dir: string }) {}
13
+
14
+ async start() {
15
+ const app = express();
16
+
17
+ const viteConfig = await getViteConfig({
18
+ dir: this.options.dir,
19
+ mode: "dev",
20
+ });
21
+
22
+ const vite = await createViteServer(viteConfig);
23
+
24
+ const graphql = createGraphQLServer({
25
+ graphqlEndpoint: "/__z/graphql",
26
+ });
27
+
28
+ app.use(graphql.graphqlEndpoint, graphql);
29
+ app.use(vite.middlewares);
30
+
31
+ app.use("*", async (req, res) => {
32
+ try {
33
+ const entryJs = getAppMainTsxPath();
34
+ const rawHtml = getDevHtml(entryJs);
35
+ const indexHtml = await vite.transformIndexHtml(req.url, rawHtml);
36
+
37
+ // Send the transformed index.html back to the client
38
+ res.status(200).set({ "Content-Type": "text/html" }).end(indexHtml);
39
+ } catch (e) {
40
+ vite.ssrFixStacktrace(e);
41
+ console.error(e);
42
+ res.status(500).end(e.message);
43
+ }
44
+ });
45
+
46
+ return new Promise<void>((resolve) => {
47
+ this.server = app.listen(this.options.port, resolve);
48
+ });
49
+ }
50
+
51
+ async stop() {
52
+ if (this.server) {
53
+ return new Promise<void>((resolve, reject) => {
54
+ this.server!.close((err) => {
55
+ if (err) {
56
+ reject(err);
57
+ } else {
58
+ resolve();
59
+ }
60
+ });
61
+ });
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,37 @@
1
+ export function getDevHtml(jsEntry: string) {
2
+ return `<!doctype html>
3
+ <html lang="en" class="dark">
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="${jsEntry}"></script>
11
+ </body>
12
+ </html>
13
+ `;
14
+ }
15
+
16
+ export function getBuildHtml({
17
+ jsEntry,
18
+ cssEntry,
19
+ }: {
20
+ jsEntry: string;
21
+ cssEntry: string;
22
+ }) {
23
+ return `<!doctype html>
24
+ <html lang="en">
25
+ <head>
26
+ <meta charset="UTF-8" />
27
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
28
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
29
+ <title>Vite + React + TS</title>
30
+ <script type="module" crossorigin src="${jsEntry}"></script>
31
+ <link rel="stylesheet" crossorigin href="${cssEntry}">
32
+ </head>
33
+ <body>
34
+ <div id="root"></div>
35
+ </body>
36
+ </html>`;
37
+ }
@@ -0,0 +1,57 @@
1
+ import { Plugin } from "vite";
2
+ import { ZudokuPluginOptions } from "../config/config.js";
3
+ import { getConfigExportCode } from "./plugin-config.js";
4
+
5
+ const viteApiPlugin = (config: ZudokuPluginOptions): Plugin => {
6
+ const virtualModuleId = "virtual:zudoku-api-plugins";
7
+ const resolvedVirtualModuleId = "\0" + virtualModuleId;
8
+
9
+ return {
10
+ name: "vite-zudoku-api-plugins",
11
+ resolveId(id) {
12
+ if (id === virtualModuleId) {
13
+ return resolvedVirtualModuleId;
14
+ }
15
+ },
16
+ load(id) {
17
+ if (id === resolvedVirtualModuleId) {
18
+ const code: string[] = [
19
+ // IMPORTANT! This path here is important, we MUST resolve
20
+ // files here as Typescript from the appDir
21
+ getConfigExportCode(config.rootDir),
22
+ `import { openApiPlugin } from "zudoku/plugins";`,
23
+ `const configuredApiPlugins = [];`,
24
+ ];
25
+
26
+ if (config?.apis) {
27
+ if (Array.isArray(config.apis)) {
28
+ config.apis.forEach((c, i) => {
29
+ code.push(
30
+ ...[
31
+ `// @ts-ignore`, // To make tests pass
32
+ `configuredApiPlugins.push(openApiPlugin(config.apis?[${i}]));`,
33
+ ],
34
+ );
35
+ });
36
+ } else {
37
+ code.push(
38
+ ...[
39
+ `// @ts-ignore`, // To make tests pass
40
+ `configuredApiPlugins.push(openApiPlugin(config.apis));`,
41
+ ],
42
+ );
43
+ }
44
+ }
45
+
46
+ code.push(`export { configuredApiPlugins };`);
47
+
48
+ return {
49
+ code: code.join("\n"),
50
+ map: null,
51
+ };
52
+ }
53
+ },
54
+ };
55
+ };
56
+
57
+ export default viteApiPlugin;
@@ -0,0 +1,32 @@
1
+ import { PluginOption } from "vite";
2
+ import { ZudokuPluginOptions } from "../config/config.js";
3
+ import { getConfigExportCode } from "./plugin-config.js";
4
+
5
+ const viteAuthPlugin = (config: ZudokuPluginOptions): PluginOption => {
6
+ const virtualModuleId = "virtual:zudoku-auth";
7
+ const resolvedVirtualModuleId = "\0" + virtualModuleId;
8
+
9
+ return {
10
+ name: "zudoku-auth-plugin", // required, will show up in warnings and errors
11
+ resolveId(id) {
12
+ if (id === virtualModuleId) {
13
+ return resolvedVirtualModuleId;
14
+ }
15
+ },
16
+ load(id) {
17
+ if (id === resolvedVirtualModuleId) {
18
+ if (!config.authentication) {
19
+ return `export const configuredAuthProvider = undefined;`;
20
+ }
21
+ // TODO: Validate that the authConfig.type is a valid authentication provider
22
+ return [
23
+ getConfigExportCode(config.rootDir),
24
+ `import { clerkAuth } from "zudoku/auth";`,
25
+ `export const configuredAuthProvider = clerkAuth(config.authentication);`,
26
+ ].join("\n");
27
+ }
28
+ },
29
+ };
30
+ };
31
+
32
+ export default viteAuthPlugin;
@@ -0,0 +1,26 @@
1
+ import { PluginOption } from "vite";
2
+
3
+ const viteComponentPlugin = (): PluginOption => {
4
+ const virtualModuleId = "virtual:zudoku-component";
5
+ const resolvedVirtualModuleId = "\0" + virtualModuleId;
6
+
7
+ return {
8
+ name: "zudoku-component-plugin",
9
+ resolveId(id) {
10
+ if (id === virtualModuleId) {
11
+ return resolvedVirtualModuleId;
12
+ }
13
+ },
14
+ load(id) {
15
+ if (id === resolvedVirtualModuleId) {
16
+ const code: string[] = [
17
+ `export { DevPortal } from "zudoku/components";`,
18
+ ];
19
+
20
+ return code.join("\n");
21
+ }
22
+ },
23
+ };
24
+ };
25
+
26
+ export default viteComponentPlugin;
@@ -0,0 +1,31 @@
1
+ import path from "path";
2
+ import { PluginOption } from "vite";
3
+
4
+ export function getConfigExportCode(rootDir: string) {
5
+ const configPath = path.join(
6
+ rootDir,
7
+ `/node_modules/.zudoku/zudoku.config.mjs`,
8
+ );
9
+ return `import config from "${configPath}"; export default config;`;
10
+ }
11
+
12
+ const viteConfigPlugin = ({ rootDir }: { rootDir: string }): PluginOption => {
13
+ const virtualModuleId = "virtual:zudoku-config";
14
+ const resolvedVirtualModuleId = "\0" + virtualModuleId;
15
+
16
+ return {
17
+ name: "zudoku-config-plugin",
18
+ resolveId(id) {
19
+ if (id === virtualModuleId) {
20
+ return resolvedVirtualModuleId;
21
+ }
22
+ },
23
+ load(id) {
24
+ if (id === resolvedVirtualModuleId) {
25
+ return getConfigExportCode(rootDir);
26
+ }
27
+ },
28
+ };
29
+ };
30
+
31
+ export default viteConfigPlugin;
@@ -0,0 +1,32 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import assert from "node:assert";
3
+ import test from "node:test";
4
+ import { checkTypescriptString } from "../ts.js";
5
+ import viteDocsPlugin from "./plugin-docs.js";
6
+
7
+ test.only("Builds code", async (t) => {
8
+ const plugin = viteDocsPlugin({
9
+ docs: { files: "docs/**/*.md" },
10
+ } as any);
11
+ if (!plugin.load) {
12
+ throw new Error("Plugin does not have a load function");
13
+ }
14
+ if (typeof plugin.load !== "function") {
15
+ throw new Error("Plugin.load is not a function");
16
+ }
17
+
18
+ const result = await plugin.load.call(
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ {} as any,
21
+ "\0virtual:markdown-plugins",
22
+ );
23
+ if (result && typeof result === "object" && "code" in result) {
24
+ const diagnostics = await checkTypescriptString(result.code);
25
+ if (diagnostics.length > 0) {
26
+ console.error(diagnostics);
27
+ }
28
+ assert.equal(diagnostics.length, 0);
29
+ } else {
30
+ assert.fail("Invalid return value from plugin.load");
31
+ }
32
+ });
@@ -0,0 +1,52 @@
1
+ import { Plugin } from "vite";
2
+ import { DocsConfig, ZudokuPluginOptions } from "../config/config.js";
3
+
4
+ const viteDocsPlugin = (config: ZudokuPluginOptions): Plugin => {
5
+ const virtualModuleId = "virtual:zudoku-docs-plugins";
6
+ const resolvedVirtualModuleId = "\0" + virtualModuleId;
7
+
8
+ return {
9
+ name: "vite-zudoku-docs-plugin",
10
+ resolveId(id) {
11
+ if (id === virtualModuleId) {
12
+ return resolvedVirtualModuleId;
13
+ }
14
+ },
15
+ load(id) {
16
+ if (id === resolvedVirtualModuleId) {
17
+ const code: string[] = [
18
+ // IMPORTANT! This path here is important, we MUST resolve
19
+ // files here as Typescript from the appDir
20
+ `import { markdownPlugin } from "zudoku/plugins";`,
21
+ `const configuredDocsPlugins = [];`,
22
+ ];
23
+ const docsConfigs: DocsConfig[] = config?.docs
24
+ ? Array.isArray(config.docs)
25
+ ? config.docs
26
+ : [config.docs]
27
+ : [];
28
+
29
+ docsConfigs.forEach((docsConfig) => {
30
+ code.push(
31
+ ...[
32
+ `// @ts-ignore`, // To make tests pass
33
+ `const markdownFiles = import.meta.glob(${JSON.stringify(docsConfig.files)}, {`,
34
+ ` eager: false,`,
35
+ `});`,
36
+ `configuredDocsPlugins.push(markdownPlugin({ markdownFiles }));`,
37
+ ],
38
+ );
39
+ });
40
+
41
+ code.push(`export { configuredDocsPlugins };`);
42
+
43
+ return {
44
+ code: code.join("\n"),
45
+ map: null,
46
+ };
47
+ }
48
+ },
49
+ };
50
+ };
51
+
52
+ export default viteDocsPlugin;
@@ -0,0 +1,50 @@
1
+ import { Plugin } from "vite";
2
+
3
+ const themeScript = `
4
+ if (
5
+ localStorage.getItem("theme") === "dark" ||
6
+ (!("theme" in localStorage) &&
7
+ window.matchMedia("(prefers-color-scheme: dark)").matches)
8
+ ) {
9
+ document.documentElement.classList.add("dark");
10
+ } else {
11
+ document.documentElement.classList.remove("dark");
12
+ }
13
+ `.trim();
14
+
15
+ const viteHtmlPlugin = (): Plugin => {
16
+ return {
17
+ name: "vite-zudoku-core-plugin",
18
+ transformIndexHtml: (html) => {
19
+ return {
20
+ html,
21
+ tags: [
22
+ {
23
+ tag: "script",
24
+ attrs: { type: "module" },
25
+ children: themeScript,
26
+ injectTo: "head",
27
+ },
28
+ {
29
+ tag: "link",
30
+ attrs: {
31
+ rel: "preconnect",
32
+ href: "https://cdn.zuplo.com/",
33
+ },
34
+ injectTo: "head",
35
+ },
36
+ {
37
+ tag: "link",
38
+ attrs: {
39
+ rel: "stylesheet",
40
+ href: "https://cdn.zuplo.com/static/fonts/geist.css",
41
+ },
42
+ injectTo: "head",
43
+ },
44
+ ],
45
+ };
46
+ },
47
+ };
48
+ };
49
+
50
+ export default viteHtmlPlugin;
@@ -0,0 +1,74 @@
1
+ import rehypeMetaAsAttributes from "@lekoarts/rehype-meta-as-attributes";
2
+ import mdx, { type Options } from "@mdx-js/rollup";
3
+ import withToc from "@stefanprobst/rehype-extract-toc";
4
+ import withTocExport from "@stefanprobst/rehype-extract-toc/mdx";
5
+ import path from "node:path";
6
+ import rehypeSlug from "rehype-slug";
7
+ import remarkComment from "remark-comment";
8
+ import remarkDirective from "remark-directive";
9
+ import remarkDirectiveRehype from "remark-directive-rehype";
10
+ import remarkFrontmatter from "remark-frontmatter";
11
+ import remarkGfm from "remark-gfm";
12
+ import remarkMdxFrontmatter from "remark-mdx-frontmatter";
13
+ import { visit } from "unist-util-visit";
14
+ import { Plugin } from "vite";
15
+
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ const rehypeCodeBlockPlugin = () => (tree: any) => {
18
+ visit(tree, "element", (node, index, parent) => {
19
+ if (node.tagName === "code") {
20
+ node.properties.inline = `${parent?.tagName !== "pre"}`;
21
+ }
22
+ });
23
+ };
24
+
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ const remarkLinkRewritePlugin = () => (tree: any) => {
27
+ visit(tree, "link", (node) => {
28
+ if (!node.url) return;
29
+
30
+ if (!node.url.startsWith("http") && !node.url.startsWith("/")) {
31
+ node.url = path.join("../", node.url);
32
+ }
33
+
34
+ node.url = node.url.replace(/\.mdx?(#.*?)?/, "$1");
35
+ });
36
+ };
37
+
38
+ export type DevPortalPluginOptions = {
39
+ remarkPlugins?: Options["remarkPlugins"];
40
+ rehypePlugins?: Options["rehypePlugins"];
41
+ };
42
+
43
+ const viteMdxPlugin = ({
44
+ remarkPlugins,
45
+ rehypePlugins,
46
+ }: DevPortalPluginOptions = {}): Plugin => {
47
+ return {
48
+ enforce: "pre",
49
+ ...mdx({
50
+ providerImportSource: "@mdx-js/react",
51
+ remarkPlugins: [
52
+ remarkComment,
53
+ remarkGfm,
54
+ remarkFrontmatter,
55
+ remarkMdxFrontmatter,
56
+ remarkDirective,
57
+ remarkDirectiveRehype,
58
+ remarkLinkRewritePlugin,
59
+ ...(remarkPlugins ?? []),
60
+ ],
61
+ rehypePlugins: [
62
+ rehypeSlug,
63
+ rehypeCodeBlockPlugin,
64
+ rehypeMetaAsAttributes,
65
+ withToc,
66
+ withTocExport,
67
+ ...(rehypePlugins ?? []),
68
+ ],
69
+ }),
70
+ name: "vite-zudoku-mdx-plugin",
71
+ };
72
+ };
73
+
74
+ export default viteMdxPlugin;
@@ -0,0 +1,30 @@
1
+ import { writeFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { Plugin } from "vite";
4
+
5
+ /**
6
+ * Used for debugging, writes metadata to build.
7
+ */
8
+ const viteBuildMetadata = (): Plugin => {
9
+ return {
10
+ name: "vite-zudoku-build-metadata-plugin",
11
+ buildEnd() {
12
+ const deps = [];
13
+ for (const id of this.getModuleIds()) {
14
+ const m = this.getModuleInfo(id);
15
+ if (m != null && !m.isExternal) {
16
+ for (const target of m.importedIds) {
17
+ deps.push({ source: m.id, target });
18
+ }
19
+ }
20
+ }
21
+
22
+ writeFileSync(
23
+ path.join(__dirname, "graph.json"),
24
+ JSON.stringify(deps, null, 2),
25
+ );
26
+ },
27
+ };
28
+ };
29
+
30
+ export default viteBuildMetadata;