zudoku 0.0.0-fb7d300 → 0.0.0-fc5c03b

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 (267) hide show
  1. package/client.d.ts +7 -0
  2. package/dist/app/entry.client.d.ts +1 -0
  3. package/dist/app/entry.client.js +13 -0
  4. package/dist/app/entry.client.js.map +1 -1
  5. package/dist/app/entry.server.d.ts +1 -0
  6. package/dist/app/entry.server.js +1 -0
  7. package/dist/app/entry.server.js.map +1 -1
  8. package/dist/app/main.js +2 -1
  9. package/dist/app/main.js.map +1 -1
  10. package/dist/app/sentry.d.ts +3 -0
  11. package/dist/app/sentry.js +19 -0
  12. package/dist/app/sentry.js.map +1 -0
  13. package/dist/app/tailwind.d.ts +2 -1
  14. package/dist/app/tailwind.js +64 -52
  15. package/dist/app/tailwind.js.map +1 -1
  16. package/dist/cli/cli.js +0 -2
  17. package/dist/cli/cli.js.map +1 -1
  18. package/dist/cli/common/logger.js +9 -0
  19. package/dist/cli/common/logger.js.map +1 -1
  20. package/dist/cli/common/outdated.js +2 -1
  21. package/dist/cli/common/outdated.js.map +1 -1
  22. package/dist/config/common.d.ts +8 -0
  23. package/dist/config/common.js +2 -0
  24. package/dist/config/common.js.map +1 -0
  25. package/dist/config/config.d.ts +3 -2
  26. package/dist/config/loader.d.ts +20 -0
  27. package/dist/config/loader.js +154 -0
  28. package/dist/config/loader.js.map +1 -0
  29. package/dist/config/validators/InputSidebarSchema.d.ts +14 -13
  30. package/dist/config/validators/InputSidebarSchema.js.map +1 -1
  31. package/dist/config/validators/common.d.ts +4911 -0
  32. package/dist/config/validators/common.js +276 -0
  33. package/dist/config/validators/common.js.map +1 -0
  34. package/dist/config/validators/icon-types.d.ts +1 -0
  35. package/dist/config/validators/icon-types.js +2 -0
  36. package/dist/config/validators/icon-types.js.map +1 -0
  37. package/dist/config/validators/validate.d.ts +777 -521
  38. package/dist/config/validators/validate.js +9 -228
  39. package/dist/config/validators/validate.js.map +1 -1
  40. package/dist/lib/authentication/providers/openid.js +7 -2
  41. package/dist/lib/authentication/providers/openid.js.map +1 -1
  42. package/dist/lib/components/Heading.d.ts +4 -4
  43. package/dist/lib/components/Heading.js +1 -1
  44. package/dist/lib/components/Heading.js.map +1 -1
  45. package/dist/lib/components/Layout.js +3 -2
  46. package/dist/lib/components/Layout.js.map +1 -1
  47. package/dist/lib/components/Markdown.js +1 -1
  48. package/dist/lib/components/Markdown.js.map +1 -1
  49. package/dist/lib/components/MobileTopNavigation.js +1 -1
  50. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  51. package/dist/lib/components/ReactMarkdown.d.ts +29 -0
  52. package/dist/lib/components/ReactMarkdown.js +182 -0
  53. package/dist/lib/components/ReactMarkdown.js.map +1 -0
  54. package/dist/lib/components/Search.d.ts +3 -1
  55. package/dist/lib/components/Search.js +3 -3
  56. package/dist/lib/components/Search.js.map +1 -1
  57. package/dist/lib/components/SyntaxHighlight.js +0 -4
  58. package/dist/lib/components/SyntaxHighlight.js.map +1 -1
  59. package/dist/lib/components/TopNavigation.d.ts +1 -1
  60. package/dist/lib/components/navigation/Sidebar.d.ts +3 -1
  61. package/dist/lib/components/navigation/Sidebar.js +2 -2
  62. package/dist/lib/components/navigation/Sidebar.js.map +1 -1
  63. package/dist/lib/components/navigation/SidebarCategory.d.ts +2 -2
  64. package/dist/lib/components/navigation/SidebarCategory.js +3 -4
  65. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  66. package/dist/lib/components/navigation/SidebarItem.d.ts +2 -4
  67. package/dist/lib/components/navigation/SidebarItem.js +5 -10
  68. package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
  69. package/dist/lib/components/navigation/SidebarWrapper.js +1 -1
  70. package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -1
  71. package/dist/lib/core/ZudokuContext.d.ts +1 -1
  72. package/dist/lib/oas/graphql/index.js +4 -1
  73. package/dist/lib/oas/graphql/index.js.map +1 -1
  74. package/dist/lib/oas/parser/upgrade/index.d.ts +2 -2
  75. package/dist/lib/oas/parser/upgrade/index.js +3 -20
  76. package/dist/lib/oas/parser/upgrade/index.js.map +1 -1
  77. package/dist/lib/plugins/api-catalog/Catalog.d.ts +6 -0
  78. package/dist/lib/plugins/api-catalog/Catalog.js +29 -0
  79. package/dist/lib/plugins/api-catalog/Catalog.js.map +1 -0
  80. package/dist/lib/plugins/api-catalog/index.d.ts +23 -0
  81. package/dist/lib/plugins/api-catalog/index.js +15 -0
  82. package/dist/lib/plugins/api-catalog/index.js.map +1 -0
  83. package/dist/lib/plugins/markdown/MdxPage.d.ts +9 -1
  84. package/dist/lib/plugins/markdown/MdxPage.js +15 -2
  85. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  86. package/dist/lib/plugins/markdown/index.d.ts +2 -1
  87. package/dist/lib/plugins/markdown/index.js +1 -1
  88. package/dist/lib/plugins/markdown/index.js.map +1 -1
  89. package/dist/lib/plugins/markdown/resolver.js.map +1 -1
  90. package/dist/lib/plugins/openapi/OperationList.js +47 -2
  91. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  92. package/dist/lib/plugins/openapi/client/GraphQLClient.js +12 -0
  93. package/dist/lib/plugins/openapi/client/GraphQLClient.js.map +1 -1
  94. package/dist/lib/plugins/openapi/client/useCreateQuery.d.ts +1 -1
  95. package/dist/lib/plugins/openapi/client/useCreateQuery.js +4 -2
  96. package/dist/lib/plugins/openapi/client/useCreateQuery.js.map +1 -1
  97. package/dist/lib/plugins/openapi/graphql/gql.d.ts +1 -1
  98. package/dist/lib/plugins/openapi/graphql/gql.js +1 -1
  99. package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
  100. package/dist/lib/plugins/openapi/graphql/graphql.d.ts +2 -0
  101. package/dist/lib/plugins/openapi/graphql/graphql.js +1 -0
  102. package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
  103. package/dist/lib/plugins/openapi/interfaces.d.ts +1 -1
  104. package/dist/lib/plugins/openapi/playground/PathParams.js +1 -1
  105. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  106. package/dist/lib/plugins/openapi/post-processors/removeExtensions.d.ts +6 -0
  107. package/dist/lib/plugins/openapi/post-processors/removeExtensions.js +14 -0
  108. package/dist/lib/plugins/openapi/post-processors/removeExtensions.js.map +1 -0
  109. package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.d.ts +1 -0
  110. package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.js +125 -0
  111. package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.js.map +1 -0
  112. package/dist/lib/plugins/openapi/post-processors/removePaths.d.ts +11 -0
  113. package/dist/lib/plugins/openapi/post-processors/removePaths.js +33 -0
  114. package/dist/lib/plugins/openapi/post-processors/removePaths.js.map +1 -0
  115. package/dist/lib/plugins/openapi/post-processors/removePaths.test.d.ts +1 -0
  116. package/dist/lib/plugins/openapi/post-processors/removePaths.test.js +104 -0
  117. package/dist/lib/plugins/openapi/post-processors/removePaths.test.js.map +1 -0
  118. package/dist/lib/plugins/openapi/post-processors/traverse.d.ts +1 -0
  119. package/dist/lib/plugins/openapi/post-processors/traverse.js +2 -0
  120. package/dist/lib/plugins/openapi/post-processors/traverse.js.map +1 -0
  121. package/dist/lib/plugins/redirect/index.d.ts +1 -1
  122. package/dist/lib/ui/Button.d.ts +1 -1
  123. package/dist/lib/ui/Command.d.ts +1 -1
  124. package/dist/lib/util/MdxComponents.d.ts +2 -3
  125. package/dist/lib/util/MdxComponents.js.map +1 -1
  126. package/dist/lib/util/traverse.d.ts +2 -0
  127. package/dist/lib/util/traverse.js +18 -0
  128. package/dist/lib/util/traverse.js.map +1 -0
  129. package/dist/vite/build.js +15 -3
  130. package/dist/vite/build.js.map +1 -1
  131. package/dist/vite/config.d.ts +6 -4
  132. package/dist/vite/config.js +54 -15
  133. package/dist/vite/config.js.map +1 -1
  134. package/dist/vite/config.test.js +7 -5
  135. package/dist/vite/config.test.js.map +1 -1
  136. package/dist/vite/dev-server.js +12 -3
  137. package/dist/vite/dev-server.js.map +1 -1
  138. package/dist/vite/output.d.ts +1 -1
  139. package/dist/vite/output.js +39 -10
  140. package/dist/vite/output.js.map +1 -1
  141. package/dist/vite/plugin-api.js +67 -20
  142. package/dist/vite/plugin-api.js.map +1 -1
  143. package/dist/vite/plugin-component.js +15 -19
  144. package/dist/vite/plugin-component.js.map +1 -1
  145. package/dist/vite/plugin-config-reload.d.ts +1 -2
  146. package/dist/vite/plugin-config-reload.js.map +1 -1
  147. package/dist/vite/plugin-config.js +20 -0
  148. package/dist/vite/plugin-config.js.map +1 -1
  149. package/dist/vite/plugin-docs.test.js +15 -23
  150. package/dist/vite/plugin-docs.test.js.map +1 -1
  151. package/dist/vite/plugin-mdx.js +58 -4
  152. package/dist/vite/plugin-mdx.js.map +1 -1
  153. package/dist/vite/{plugin-custom-css.d.ts → plugin-theme-css.d.ts} +2 -2
  154. package/dist/vite/{plugin-custom-css.js → plugin-theme-css.js} +10 -3
  155. package/dist/vite/plugin-theme-css.js.map +1 -0
  156. package/dist/vite/plugin.d.ts +1 -2
  157. package/dist/vite/plugin.js +2 -2
  158. package/dist/vite/plugin.js.map +1 -1
  159. package/dist/vite/prerender.d.ts +2 -1
  160. package/dist/vite/prerender.js +2 -2
  161. package/dist/vite/prerender.js.map +1 -1
  162. package/dist/vite/sitemap.d.ts +1 -1
  163. package/dist/zuplo/env.d.ts +6 -0
  164. package/dist/zuplo/env.js +9 -0
  165. package/dist/zuplo/env.js.map +1 -0
  166. package/dist/zuplo/with-zuplo.d.ts +3 -0
  167. package/dist/zuplo/with-zuplo.js +28 -0
  168. package/dist/zuplo/with-zuplo.js.map +1 -0
  169. package/lib/AnchorLink-BR0MvI7n.js +35 -0
  170. package/lib/AnchorLink-BR0MvI7n.js.map +1 -0
  171. package/lib/{Markdown-ievDDhFT.js → Markdown-CRsmPPfY.js} +13084 -13096
  172. package/lib/Markdown-CRsmPPfY.js.map +1 -0
  173. package/lib/MdxPage-Wp8QU0-q.js +188 -0
  174. package/lib/MdxPage-Wp8QU0-q.js.map +1 -0
  175. package/lib/{OperationList-BwBl1xrD.js → OperationList-u8xHU9-b.js} +1031 -1016
  176. package/lib/OperationList-u8xHU9-b.js.map +1 -0
  177. package/lib/{SlotletProvider-DyomlzGx.js → SlotletProvider-BgvYIPQe.js} +2 -2
  178. package/lib/{SlotletProvider-DyomlzGx.js.map → SlotletProvider-BgvYIPQe.js.map} +1 -1
  179. package/lib/{SyntaxHighlight-DkLOsjHS.js → SyntaxHighlight-C31iouiO.js} +1 -3
  180. package/lib/{SyntaxHighlight-DkLOsjHS.js.map → SyntaxHighlight-C31iouiO.js.map} +1 -1
  181. package/lib/assets/{worker-CPsGZsve.js → worker-C_2va8B8.js} +8 -9
  182. package/lib/assets/worker-C_2va8B8.js.map +1 -0
  183. package/lib/{createServer-DK-g7kbB.js → createServer-BCAHdrpE.js} +4461 -5248
  184. package/lib/createServer-BCAHdrpE.js.map +1 -0
  185. package/lib/{index-DNxQ_rCt.js → index-CmdLGbbk.js} +53 -47
  186. package/lib/index-CmdLGbbk.js.map +1 -0
  187. package/lib/{AnchorLink-CDlhr8gL.js → index.esm-Bm8pj-bc.js} +223 -254
  188. package/lib/index.esm-Bm8pj-bc.js.map +1 -0
  189. package/lib/object_hash-CvlLgU-M.js +785 -0
  190. package/lib/object_hash-CvlLgU-M.js.map +1 -0
  191. package/lib/post-processors/removeExtensions.js +11 -0
  192. package/lib/post-processors/removeExtensions.js.map +1 -0
  193. package/lib/post-processors/removePaths.js +28 -0
  194. package/lib/post-processors/removePaths.js.map +1 -0
  195. package/lib/post-processors/traverse.js +12 -0
  196. package/lib/post-processors/traverse.js.map +1 -0
  197. package/lib/ui/Drawer.js +79 -79
  198. package/lib/ui/Drawer.js.map +1 -1
  199. package/lib/zudoku.auth-openid.js +42 -37
  200. package/lib/zudoku.auth-openid.js.map +1 -1
  201. package/lib/zudoku.components.js +386 -367
  202. package/lib/zudoku.components.js.map +1 -1
  203. package/lib/zudoku.openapi-worker.js +1 -1
  204. package/lib/zudoku.plugin-api-catalog.js +121 -0
  205. package/lib/zudoku.plugin-api-catalog.js.map +1 -0
  206. package/lib/zudoku.plugin-api-keys.js +1 -1
  207. package/lib/zudoku.plugin-custom-pages.js +1 -1
  208. package/lib/zudoku.plugin-markdown.js +15 -14
  209. package/lib/zudoku.plugin-markdown.js.map +1 -1
  210. package/lib/zudoku.plugin-openapi.js +1 -1
  211. package/lib/zudoku.plugin-redirect.js.map +1 -1
  212. package/package.json +32 -9
  213. package/src/app/entry.client.tsx +15 -0
  214. package/src/app/entry.server.tsx +1 -0
  215. package/src/app/main.tsx +5 -1
  216. package/src/app/sentry.ts +24 -0
  217. package/src/app/tailwind.ts +67 -52
  218. package/src/lib/authentication/providers/openid.tsx +7 -2
  219. package/src/lib/components/Heading.tsx +13 -13
  220. package/src/lib/components/Layout.tsx +8 -3
  221. package/src/lib/components/Markdown.tsx +1 -1
  222. package/src/lib/components/MobileTopNavigation.tsx +18 -18
  223. package/src/lib/components/ReactMarkdown.license.txt +21 -0
  224. package/src/lib/components/ReactMarkdown.tsx +264 -0
  225. package/src/lib/components/Search.tsx +3 -3
  226. package/src/lib/components/SyntaxHighlight.tsx +0 -4
  227. package/src/lib/components/TopNavigation.tsx +1 -1
  228. package/src/lib/components/navigation/Sidebar.tsx +18 -8
  229. package/src/lib/components/navigation/SidebarCategory.tsx +10 -9
  230. package/src/lib/components/navigation/SidebarItem.tsx +10 -13
  231. package/src/lib/components/navigation/SidebarWrapper.tsx +1 -1
  232. package/src/lib/core/ZudokuContext.ts +1 -1
  233. package/src/lib/oas/graphql/index.ts +4 -1
  234. package/src/lib/oas/parser/upgrade/index.ts +4 -27
  235. package/src/lib/plugins/api-catalog/Catalog.tsx +124 -0
  236. package/src/lib/plugins/api-catalog/index.tsx +50 -0
  237. package/src/lib/plugins/markdown/MdxPage.tsx +27 -1
  238. package/src/lib/plugins/markdown/index.tsx +3 -1
  239. package/src/lib/plugins/markdown/resolver.ts +2 -4
  240. package/src/lib/plugins/openapi/OperationList.tsx +64 -3
  241. package/src/lib/plugins/openapi/client/GraphQLClient.tsx +17 -0
  242. package/src/lib/plugins/openapi/client/useCreateQuery.ts +5 -2
  243. package/src/lib/plugins/openapi/graphql/gql.ts +2 -2
  244. package/src/lib/plugins/openapi/graphql/graphql.ts +3 -0
  245. package/src/lib/plugins/openapi/interfaces.ts +1 -1
  246. package/src/lib/plugins/openapi/playground/PathParams.tsx +1 -0
  247. package/src/lib/plugins/openapi/post-processors/removeExtensions.test.ts +144 -0
  248. package/src/lib/plugins/openapi/post-processors/removeExtensions.ts +24 -0
  249. package/src/lib/plugins/openapi/post-processors/removePaths.test.ts +126 -0
  250. package/src/lib/plugins/openapi/post-processors/removePaths.ts +55 -0
  251. package/src/lib/plugins/openapi/post-processors/traverse.ts +1 -0
  252. package/src/lib/plugins/redirect/index.tsx +1 -1
  253. package/src/lib/util/MdxComponents.tsx +2 -5
  254. package/src/lib/util/traverse.ts +25 -0
  255. package/dist/vite/plugin-custom-css.js.map +0 -1
  256. package/lib/AnchorLink-CDlhr8gL.js.map +0 -1
  257. package/lib/Markdown-ievDDhFT.js.map +0 -1
  258. package/lib/MdxPage-Bwn-VSsH.js +0 -174
  259. package/lib/MdxPage-Bwn-VSsH.js.map +0 -1
  260. package/lib/OperationList-BwBl1xrD.js.map +0 -1
  261. package/lib/assets/worker-CPsGZsve.js.map +0 -1
  262. package/lib/createServer-DK-g7kbB.js.map +0 -1
  263. package/lib/index-DNxQ_rCt.js.map +0 -1
  264. package/lib/prism-markup-templating-DZrrEs0A.js +0 -62
  265. package/lib/prism-markup-templating-DZrrEs0A.js.map +0 -1
  266. package/lib/prism-php.min-o7FpoMP_.js +0 -11
  267. package/lib/prism-php.min-o7FpoMP_.js.map +0 -1
@@ -0,0 +1,125 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { removeExtensions } from "./removeExtensions.js";
3
+ const baseDoc = {
4
+ openapi: "3.1.0",
5
+ "x-root-ext": "remove me",
6
+ info: {
7
+ title: "Test API",
8
+ version: "1.0.0",
9
+ "x-info-ext": "remove me",
10
+ },
11
+ paths: {
12
+ "/test": {
13
+ "x-path-ext": "remove me",
14
+ parameters: [
15
+ {
16
+ name: "param1",
17
+ in: "query",
18
+ schema: { type: "string" },
19
+ "x-param-ext": "remove me",
20
+ },
21
+ ],
22
+ get: {
23
+ "x-operation-ext": "remove me",
24
+ responses: {
25
+ "200": {
26
+ description: "OK",
27
+ "x-response-ext": "remove me",
28
+ },
29
+ },
30
+ parameters: [
31
+ {
32
+ name: "opParam1",
33
+ in: "header",
34
+ schema: { type: "string" },
35
+ "x-op-param-ext": "remove me",
36
+ },
37
+ ],
38
+ },
39
+ },
40
+ },
41
+ tags: [
42
+ {
43
+ name: "example",
44
+ "x-tag-ext": "remove me",
45
+ },
46
+ ],
47
+ components: {
48
+ securitySchemes: {
49
+ ApiKeyAuth: {
50
+ type: "apiKey",
51
+ name: "api_key",
52
+ in: "header",
53
+ "x-security-ext": "remove me",
54
+ },
55
+ },
56
+ },
57
+ };
58
+ describe("removeExtensions", () => {
59
+ it("removes all x- extensions by default", () => {
60
+ const processed = removeExtensions()(baseDoc);
61
+ const removedExtensions = [
62
+ "x-root-ext",
63
+ "info.x-info-ext",
64
+ "paths./test.x-path-ext",
65
+ "paths./test.parameters[0].x-param-ext",
66
+ "paths./test.get.x-operation-ext",
67
+ "paths./test.get.responses.200.x-response-ext",
68
+ "paths./test.get.parameters[0].x-op-param-ext",
69
+ "tags[0].x-tag-ext",
70
+ "components.securitySchemes.ApiKeyAuth.x-security-ext",
71
+ ];
72
+ removedExtensions.forEach((ext) => {
73
+ expect(processed).not.toHaveProperty(ext.split("."));
74
+ });
75
+ // Assert that non-x- fields remain unchanged
76
+ expect(processed.openapi).toBe("3.1.0");
77
+ expect(processed.info.title).toBe("Test API");
78
+ expect(processed).toHaveProperty(["paths", "/test", "get", "responses", "200", "description"], "OK");
79
+ expect(processed.tags[0].name).toBe("example");
80
+ });
81
+ it("removes only specified x- extensions when names are provided", () => {
82
+ const docWithExtraExtensions = {
83
+ ...baseDoc,
84
+ info: { ...baseDoc.info, "x-other-ext": "keep me" },
85
+ };
86
+ const processed = removeExtensions({
87
+ keys: ["x-path-ext", "x-param-ext"],
88
+ })(docWithExtraExtensions);
89
+ // Assert specified extensions are removed
90
+ expect(processed.paths["/test"]["x-path-ext"]).toBeUndefined();
91
+ expect(processed.paths["/test"].parameters[0]["x-param-ext"]).toBeUndefined();
92
+ // Assert other x- fields remain
93
+ expect(processed["x-root-ext"]).toBe("remove me");
94
+ expect(processed.info["x-info-ext"]).toBe("remove me");
95
+ expect(processed.info["x-other-ext"]).toBe("keep me");
96
+ });
97
+ it("handles deeply nested extensions", () => {
98
+ const deeplyNested = {
99
+ a: {
100
+ b: {
101
+ c: {
102
+ "x-deep-ext": "remove me",
103
+ d: {
104
+ e: "value",
105
+ "x-another-ext": "remove me",
106
+ },
107
+ },
108
+ },
109
+ },
110
+ };
111
+ const processed = removeExtensions()(deeplyNested);
112
+ expect(processed.a.b.c["x-deep-ext"]).toBeUndefined();
113
+ expect(processed.a.b.c.d["x-another-ext"]).toBeUndefined();
114
+ expect(processed.a.b.c.d.e).toBe("value");
115
+ });
116
+ it("does nothing if no x- extensions are present", () => {
117
+ const docWithoutExtensions = {
118
+ openapi: "3.1.0",
119
+ info: { title: "API without extensions" },
120
+ };
121
+ const processed = removeExtensions()(docWithoutExtensions);
122
+ expect(processed).toEqual(docWithoutExtensions);
123
+ });
124
+ });
125
+ //# sourceMappingURL=removeExtensions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeExtensions.test.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/post-processors/removeExtensions.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type RecordAny } from "./traverse.js";
2
+ interface RemovePathsOptions {
3
+ paths?: Record<string, true | string[]>;
4
+ shouldRemove?: (options: {
5
+ path: string;
6
+ method: true | string;
7
+ operation: RecordAny;
8
+ }) => boolean;
9
+ }
10
+ export declare const removePaths: ({ paths, shouldRemove }: RemovePathsOptions) => (doc: RecordAny) => RecordAny;
11
+ export {};
@@ -0,0 +1,33 @@
1
+ import { traverse } from "./traverse.js";
2
+ export const removePaths = ({ paths = {}, shouldRemove }) => (doc) => traverse(doc, (spec) => {
3
+ if (!spec.paths)
4
+ return spec;
5
+ const updatedPaths = {};
6
+ for (const [path, methods] of Object.entries(spec.paths)) {
7
+ const operations = spec.paths[path];
8
+ // If the path is explicitly marked for removal in `paths`
9
+ if (paths[path] === true)
10
+ continue;
11
+ // If the path should be removed via `shouldRemove`
12
+ if (shouldRemove?.({ path, method: true, operation: operations }))
13
+ continue;
14
+ if (typeof methods === "object" && methods !== null) {
15
+ const filteredPath = Object.fromEntries(Object.entries(methods).filter(([method]) => {
16
+ const operations = spec.paths[path][method];
17
+ const isMethodToRemove = Array.isArray(paths[path]) && paths[path].includes(method);
18
+ const isMethodFiltered = shouldRemove?.({
19
+ path,
20
+ method,
21
+ operation: operations,
22
+ });
23
+ return !isMethodToRemove && !isMethodFiltered;
24
+ }));
25
+ updatedPaths[path] = filteredPath;
26
+ }
27
+ else {
28
+ updatedPaths[path] = methods;
29
+ }
30
+ }
31
+ return { ...spec, paths: updatedPaths };
32
+ });
33
+ //# sourceMappingURL=removePaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removePaths.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/post-processors/removePaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAYzD,MAAM,CAAC,MAAM,WAAW,GACtB,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,YAAY,EAAsB,EAAE,EAAE,CACrD,CAAC,GAAc,EAAa,EAAE,CAC5B,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,YAAY,GAAc,EAAE,CAAC;IAEnC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpC,0DAA0D;QAC1D,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QAEnC,mDAAmD;QACnD,IAAI,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;YAC/D,SAAS;QAEX,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;gBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,gBAAgB,GACpB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAE7D,MAAM,gBAAgB,GAAG,YAAY,EAAE,CAAC;oBACtC,IAAI;oBACJ,MAAM;oBACN,SAAS,EAAE,UAAU;iBACtB,CAAC,CAAC;gBAEH,OAAO,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC;YAChD,CAAC,CAAC,CACH,CAAC;YAEF,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { removePaths } from "./removePaths.js";
3
+ const baseDoc = {
4
+ openapi: "3.0.3",
5
+ paths: {
6
+ "/example": {
7
+ get: { summary: "Get example" },
8
+ post: { summary: "Post example" },
9
+ },
10
+ "/remove-me": {
11
+ delete: { summary: "Delete example" },
12
+ },
13
+ "/another": {
14
+ get: { summary: "Another example" },
15
+ },
16
+ },
17
+ };
18
+ describe("removePaths", () => {
19
+ it("removes paths specified in the paths option", () => {
20
+ const processed = removePaths({
21
+ paths: {
22
+ "/remove-me": true,
23
+ },
24
+ })(baseDoc);
25
+ expect(processed.paths["/remove-me"]).toBeUndefined();
26
+ expect(processed.paths["/example"]).toBeDefined();
27
+ expect(processed.paths["/another"]).toBeDefined();
28
+ });
29
+ it("removes specific methods in the paths option", () => {
30
+ const processed = removePaths({
31
+ paths: {
32
+ "/example": ["get"],
33
+ },
34
+ })(baseDoc);
35
+ expect(processed.paths["/example"].get).toBeUndefined();
36
+ expect(processed.paths["/example"].post).toBeDefined();
37
+ expect(processed.paths["/remove-me"]).toBeDefined();
38
+ });
39
+ it("removes paths and methods using paths and shouldRemove together", () => {
40
+ const processed = removePaths({
41
+ paths: {
42
+ "/example": ["post"],
43
+ },
44
+ shouldRemove: ({ path }) => path.startsWith("/remove"),
45
+ })(baseDoc);
46
+ expect(processed.paths["/remove-me"]).toBeUndefined();
47
+ expect(processed.paths["/example"].get).toBeDefined();
48
+ expect(processed.paths["/example"].post).toBeUndefined();
49
+ expect(processed.paths["/another"]).toBeDefined();
50
+ });
51
+ it("removes paths based on shouldRemove callback", () => {
52
+ const processed = removePaths({
53
+ shouldRemove: ({ path }) => path.startsWith("/remove"),
54
+ })(baseDoc);
55
+ expect(processed.paths["/remove-me"]).toBeUndefined();
56
+ expect(processed.paths["/example"]).toBeDefined();
57
+ expect(processed.paths["/another"]).toBeDefined();
58
+ });
59
+ it("removes methods based on shouldRemove callback", () => {
60
+ const processed = removePaths({
61
+ shouldRemove: ({ method }) => method === "post",
62
+ })(baseDoc);
63
+ expect(processed.paths["/example"].post).toBeUndefined();
64
+ expect(processed.paths["/example"].get).toBeDefined();
65
+ expect(processed.paths["/remove-me"]).toBeDefined();
66
+ });
67
+ it("removes both paths and methods based on shouldRemove callback", () => {
68
+ const processed = removePaths({
69
+ shouldRemove: ({ path, method }) => path.startsWith("/remove") || method === "post",
70
+ })(baseDoc);
71
+ expect(processed.paths["/remove-me"]).toBeUndefined();
72
+ expect(processed.paths["/example"].post).toBeUndefined();
73
+ expect(processed.paths["/example"].get).toBeDefined();
74
+ expect(processed.paths["/another"]).toBeDefined();
75
+ });
76
+ it("does nothing if shouldRemove always returns false", () => {
77
+ const processed = removePaths({
78
+ shouldRemove: () => false,
79
+ })(baseDoc);
80
+ expect(processed).toEqual(baseDoc);
81
+ });
82
+ it("removes everything if shouldRemove always returns true", () => {
83
+ const processed = removePaths({
84
+ shouldRemove: () => true,
85
+ })(baseDoc);
86
+ expect(processed.paths).toEqual({});
87
+ });
88
+ it("removes entire paths via shouldRemove callback", () => {
89
+ const processed = removePaths({
90
+ shouldRemove: ({ path, method }) => method === true && path === "/remove-me",
91
+ })(baseDoc);
92
+ expect(processed.paths["/remove-me"]).toBeUndefined();
93
+ expect(processed.paths["/example"]).toBeDefined();
94
+ expect(processed.paths["/another"]).toBeDefined();
95
+ });
96
+ it("removes specific methods while keeping paths", () => {
97
+ const processed = removePaths({
98
+ shouldRemove: ({ method }) => method === "delete",
99
+ })(baseDoc);
100
+ expect(processed.paths["/remove-me"]).toBeDefined();
101
+ expect(processed.paths["/remove-me"].delete).toBeUndefined();
102
+ });
103
+ });
104
+ //# sourceMappingURL=removePaths.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removePaths.test.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/post-processors/removePaths.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { traverse, type RecordAny } from "../../../util/traverse.js";
@@ -0,0 +1,2 @@
1
+ export { traverse } from "../../../util/traverse.js";
2
+ //# sourceMappingURL=traverse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/post-processors/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,2BAA2B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ZudokuRedirect } from "../../../config/validators/validate.js";
1
+ import { ZudokuRedirect } from "../../../config/validators/common.js";
2
2
  import type { ZudokuPlugin } from "../../core/plugins.js";
3
3
  export declare const redirectPlugin: (options: {
4
4
  redirects: ZudokuRedirect[];
@@ -1,7 +1,7 @@
1
1
  import { VariantProps } from "class-variance-authority";
2
2
  import * as React from "react";
3
3
  export declare const buttonVariants: (props?: ({
4
- variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
4
+ variant?: "default" | "link" | "ghost" | "secondary" | "destructive" | "outline" | null | undefined;
5
5
  size?: "default" | "icon" | "sm" | "lg" | "xl" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -66,7 +66,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
66
66
  ref?: React.Ref<HTMLDivElement>;
67
67
  } & {
68
68
  asChild?: boolean;
69
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "onSelect" | "disabled"> & {
69
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "disabled" | "onSelect"> & {
70
70
  disabled?: boolean;
71
71
  onSelect?: (value: string) => void;
72
72
  value?: string;
@@ -1,6 +1,5 @@
1
- import { MDXProvider } from "@mdx-js/react";
2
- import type { ComponentProps } from "react";
3
- export type MdxComponentsType = ComponentProps<typeof MDXProvider>["components"];
1
+ import { MDXComponents } from "mdx/types.js";
2
+ export type MdxComponentsType = Readonly<MDXComponents> | null | undefined;
4
3
  export declare const MdxComponents: {
5
4
  img: ({ node, ...props }: import("react").DetailedHTMLProps<import("react").ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>) => import("react/jsx-runtime").JSX.Element;
6
5
  h1: ({ children, id }: import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"MdxComponents.js","sourceRoot":"","sources":["../../../src/lib/util/MdxComponents.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MdxComponents.js","sourceRoot":"","sources":["../../../src/lib/util/MdxComponents.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type RecordAny = Record<string, any>;
2
+ export declare const traverse: (specification: RecordAny, transform: (specification: RecordAny) => RecordAny) => RecordAny;
@@ -0,0 +1,18 @@
1
+ export const traverse = (specification, transform) => {
2
+ const result = {};
3
+ for (const [key, value] of Object.entries(specification)) {
4
+ if (Array.isArray(value)) {
5
+ result[key] = value.map((item) => typeof item === "object" && item !== null
6
+ ? traverse(item, transform)
7
+ : item);
8
+ }
9
+ else if (typeof value === "object" && value !== null) {
10
+ result[key] = traverse(value, transform);
11
+ }
12
+ else {
13
+ result[key] = value;
14
+ }
15
+ }
16
+ return transform(result);
17
+ };
18
+ //# sourceMappingURL=traverse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../../src/lib/util/traverse.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,aAAwB,EACxB,SAAkD,EAClD,EAAE;IACF,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;gBACvC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBAC3B,CAAC,CAAC,IAAI,CACT,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
- import { writeFile } from "fs/promises";
1
+ import { mkdir, rename, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { build as viteBuild } from "vite";
4
+ import { findOutputPathOfServerConfig } from "../config/loader.js";
4
5
  import { joinPath } from "../lib/util/joinPath.js";
5
6
  import { getViteConfig, loadZudokuConfig } from "./config.js";
6
7
  import { getBuildHtml } from "./html.js";
@@ -19,7 +20,7 @@ export async function runBuild(options) {
19
20
  });
20
21
  // Don't run in parallel because it might overwrite itself
21
22
  const clientResult = await viteBuild(viteClientConfig);
22
- await viteBuild(viteServerConfig);
23
+ const serverResult = await viteBuild(viteServerConfig);
23
24
  if (Array.isArray(clientResult)) {
24
25
  throw new Error("Build failed");
25
26
  }
@@ -33,11 +34,13 @@ export async function runBuild(options) {
33
34
  jsEntry: joinPath(viteClientConfig.base, jsEntry),
34
35
  cssEntry: joinPath(viteClientConfig.base, cssEntry),
35
36
  });
37
+ const serverConfigFilename = findOutputPathOfServerConfig(serverResult);
36
38
  try {
37
39
  const writtenFiles = await prerender({
38
40
  html,
39
41
  dir: options.dir,
40
42
  base: viteClientConfig.base,
43
+ serverConfigFilename,
41
44
  });
42
45
  if (writtenFiles.includes("index.html")) {
43
46
  return;
@@ -49,8 +52,17 @@ export async function runBuild(options) {
49
52
  // eslint-disable-next-line no-console
50
53
  console.error(e);
51
54
  }
55
+ if (process.env.VERCEL) {
56
+ await mkdir(path.join(options.dir, ".vercel/output/static"), {
57
+ recursive: true,
58
+ });
59
+ await rename(path.join(options.dir, "dist"), path.join(options.dir, ".vercel/output/static"));
60
+ }
52
61
  // Write the build output file
53
- const config = await loadZudokuConfig(options.dir);
62
+ const { config } = await loadZudokuConfig({
63
+ mode: "production",
64
+ command: "build",
65
+ }, options.dir);
54
66
  await writeOutput(options.dir, config);
55
67
  return;
56
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/vite/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/vite/build.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
- import { ConfigWithMeta } from "@zudoku/config";
2
1
  import { type ConfigEnv, type InlineConfig } from "vite";
3
- import type { ZudokuConfig, ZudokuPluginOptions } from "../config/config.js";
2
+ import type { LoadedConfig, ZudokuPluginOptions } from "../config/config.js";
4
3
  export type ZudokuConfigEnv = ConfigEnv & {
5
4
  mode: "development" | "production";
6
5
  forceReload?: boolean;
7
6
  };
8
- export type LoadedConfig = ConfigWithMeta<ZudokuConfig>;
9
- export declare function loadZudokuConfig(rootDir: string, forceReload?: boolean): Promise<LoadedConfig>;
7
+ export declare function loadZudokuConfig(configEnv: ConfigEnv, rootDir: string, forceReload?: boolean): Promise<{
8
+ config: LoadedConfig;
9
+ envPrefix: string[];
10
+ publicEnv: Record<string, string>;
11
+ }>;
10
12
  export declare function getAppClientEntryPath(): string;
11
13
  export declare function getAppServerEntryPath(): string;
12
14
  export declare function getPluginOptions({ dir, mode, }: {
@@ -1,35 +1,71 @@
1
1
  import { vitePluginSsrCss } from "@hiogawa/vite-plugin-ssr-css";
2
- import { loadZudokuConfig as loadZudokuConfigInner, } from "@zudoku/config";
3
2
  import autoprefixer from "autoprefixer";
4
3
  import path from "node:path";
5
4
  import { fileURLToPath } from "node:url";
6
5
  import colors from "picocolors";
7
6
  import tailwindcss from "tailwindcss";
8
- import { loadConfigFromFile, mergeConfig, } from "vite";
7
+ import { loadConfigFromFile, mergeConfig, loadEnv as viteLoadEnv, } from "vite";
9
8
  import tailwindConfig from "../app/tailwind.js";
10
9
  import { logger } from "../cli/common/logger.js";
11
10
  import { isPortAvailable } from "../cli/common/utils/ports.js";
12
- import { validateConfig } from "../config/validators/validate.js";
11
+ import { tryLoadZudokuConfig } from "../config/loader.js";
12
+ import { ZuploEnv } from "../zuplo/env.js";
13
13
  import vitePlugin from "./plugin.js";
14
- let config;
15
14
  const getDocsConfigFiles = (docsConfig, baseDir) => {
16
15
  if (!docsConfig)
17
16
  return [];
18
17
  const docsArray = Array.isArray(docsConfig) ? docsConfig : [docsConfig];
19
18
  return docsArray.map((doc) => path.posix.join(baseDir, doc.files));
20
19
  };
21
- export async function loadZudokuConfig(rootDir, forceReload) {
22
- if (!forceReload && config) {
23
- return config;
20
+ // We extend the dependencies with the files from configured APIs
21
+ // so that the server restarts when these files change.
22
+ const registerApiFileImportDependencies = (config, rootDir) => {
23
+ if (!config.apis)
24
+ return;
25
+ const apis = Array.isArray(config.apis) ? config.apis : [config.apis];
26
+ const files = apis
27
+ .filter((c) => c.type === "file")
28
+ .map((c) => path.posix.join(rootDir, c.input));
29
+ config.__meta.registerDependency(...files);
30
+ };
31
+ function loadEnv(configEnv, rootDir) {
32
+ const envPrefix = [
33
+ ...(ZuploEnv.isZuplo ? ["ZUPLO_PUBLIC_"] : []),
34
+ "ZUDOKU_PUBLIC_",
35
+ ];
36
+ const localEnv = viteLoadEnv(configEnv.mode, rootDir, envPrefix);
37
+ process.env = { ...localEnv, ...process.env };
38
+ const publicEnv = Object.entries(process.env).reduce((val, [key]) => {
39
+ if (envPrefix.some((prefix) => key.startsWith(prefix))) {
40
+ val[key] = JSON.stringify(process.env[key]);
41
+ }
42
+ return val;
43
+ }, {});
44
+ return { publicEnv, envPrefix };
45
+ }
46
+ let config;
47
+ let envPrefix;
48
+ let publicEnv;
49
+ export async function loadZudokuConfig(configEnv, rootDir, forceReload) {
50
+ if (!forceReload && config && envPrefix && publicEnv) {
51
+ return { config, envPrefix, publicEnv };
24
52
  }
53
+ ({ publicEnv, envPrefix } = loadEnv(configEnv, rootDir));
25
54
  try {
26
- const loadedConfig = await loadZudokuConfigInner(rootDir);
55
+ const envVars = {};
56
+ for (const key in process.env) {
57
+ if (envPrefix.some((prefix) => key.startsWith(prefix))) {
58
+ envVars[key] = process.env[key];
59
+ }
60
+ }
61
+ const loadedConfig = await tryLoadZudokuConfig(rootDir, envVars);
62
+ registerApiFileImportDependencies(loadedConfig, rootDir);
27
63
  logger.info(colors.yellow(`loaded config file `) +
28
64
  colors.dim(loadedConfig.__meta.path), {
29
65
  timestamp: true,
30
66
  });
31
67
  config = loadedConfig;
32
- return loadedConfig;
68
+ return { config, envPrefix, publicEnv };
33
69
  }
34
70
  catch (error) {
35
71
  logger.error(colors.red(`Error loading Zudoku config`), {
@@ -71,13 +107,12 @@ export function getPluginOptions({ dir, mode, }) {
71
107
  };
72
108
  }
73
109
  export async function getViteConfig(dir, configEnv, onConfigChange) {
74
- const config = await loadZudokuConfig(dir);
110
+ const { config, publicEnv, envPrefix } = await loadZudokuConfig(configEnv, dir);
75
111
  const handleConfigChange = async () => {
76
- const config = await loadZudokuConfig(dir, true);
112
+ const { config } = await loadZudokuConfig(configEnv, dir, true);
77
113
  onConfigChange?.(config);
78
114
  return config;
79
115
  };
80
- validateConfig(config);
81
116
  let websocketPort = 9800;
82
117
  while (!(await isPortAvailable("localhost", websocketPort)) &&
83
118
  websocketPort < 9999) {
@@ -95,10 +130,14 @@ export async function getViteConfig(dir, configEnv, onConfigChange) {
95
130
  clearScreen: false,
96
131
  logLevel: (process.env.LOG_LEVEL ?? "info"),
97
132
  customLogger: logger,
98
- envPrefix: "PUBLIC_",
133
+ envPrefix,
99
134
  worker: {
100
135
  format: "es",
101
136
  },
137
+ define: {
138
+ "process.env.SENTRY_DSN": JSON.stringify(process.env.SENTRY_DSN),
139
+ ...publicEnv,
140
+ },
102
141
  ssr: {
103
142
  target: "node",
104
143
  noExternal: [],
@@ -138,7 +177,7 @@ export async function getViteConfig(dir, configEnv, onConfigChange) {
138
177
  ? getAppServerEntryPath()
139
178
  : getAppClientEntryPath(),
140
179
  ],
141
- include: ["react-dom/client"],
180
+ include: ["react-dom/client", "@sentry/react"],
142
181
  exclude: [
143
182
  // Vite does not like optimizing the worker dependency
144
183
  "zudoku/openapi-worker",
@@ -156,7 +195,7 @@ export async function getViteConfig(dir, configEnv, onConfigChange) {
156
195
  postcss: {
157
196
  plugins: [
158
197
  tailwindcss({
159
- ...tailwindConfig,
198
+ ...tailwindConfig(config),
160
199
  content: [
161
200
  // Zudoku components and styles
162
201
  // Tailwind seems to crash if it tries to parse compiled .js files