@demiurgejs/core 0.2.0-beta.2 → 0.2.0-beta.4

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 (232) hide show
  1. package/README.md +13 -11
  2. package/bin/demiurge.mjs +30 -12
  3. package/dist/adapter/testing.js.map +1 -1
  4. package/dist/browser/file-router.d.ts +388 -5
  5. package/dist/browser/file-router.d.ts.map +1 -1
  6. package/dist/browser/focus.d.ts +20 -0
  7. package/dist/browser/focus.d.ts.map +1 -0
  8. package/dist/browser/index.d.ts +7 -1
  9. package/dist/browser/index.d.ts.map +1 -1
  10. package/dist/browser/mutation-action.d.ts +81 -0
  11. package/dist/browser/mutation-action.d.ts.map +1 -0
  12. package/dist/chunks/document-shell-CpJnFtSC.js +36 -0
  13. package/dist/chunks/document-shell-CpJnFtSC.js.map +1 -0
  14. package/dist/chunks/env-startup-DOBYWlZD.js +257 -0
  15. package/dist/chunks/env-startup-DOBYWlZD.js.map +1 -0
  16. package/dist/chunks/{image-codec-BGTx_t5K.js → image-codec-BmzWnH6W.js} +2 -2
  17. package/dist/chunks/{image-codec-BGTx_t5K.js.map → image-codec-BmzWnH6W.js.map} +1 -1
  18. package/dist/chunks/{images-B9MqcjSA.js → images-BQ80950B.js} +99 -91
  19. package/dist/chunks/images-BQ80950B.js.map +1 -0
  20. package/dist/chunks/index-BVk9zWbe.js +832 -0
  21. package/dist/chunks/index-BVk9zWbe.js.map +1 -0
  22. package/dist/chunks/manifest-vO6c0G0W.js +19 -0
  23. package/dist/chunks/manifest-vO6c0G0W.js.map +1 -0
  24. package/dist/chunks/plugin-BQgMiHxa.js +1827 -0
  25. package/dist/chunks/plugin-BQgMiHxa.js.map +1 -0
  26. package/dist/chunks/session-store-ChModVcq.js +92 -0
  27. package/dist/chunks/session-store-ChModVcq.js.map +1 -0
  28. package/dist/chunks/static-files-ehaD1kE7.js +51 -0
  29. package/dist/chunks/static-files-ehaD1kE7.js.map +1 -0
  30. package/dist/chunks/{streaming-BQ1bykDo.js → streaming-BEbPN7Uk.js} +163 -163
  31. package/dist/chunks/streaming-BEbPN7Uk.js.map +1 -0
  32. package/dist/chunks/testing-DueXbMo4.js +4167 -0
  33. package/dist/chunks/testing-DueXbMo4.js.map +1 -0
  34. package/dist/chunks/vite-DO70kZA6.js +259 -0
  35. package/dist/chunks/vite-DO70kZA6.js.map +1 -0
  36. package/dist/cli.d.ts +17 -25
  37. package/dist/cli.d.ts.map +1 -1
  38. package/dist/cli.js +159 -124
  39. package/dist/cli.js.map +1 -1
  40. package/dist/config/define.d.ts +3 -0
  41. package/dist/config/define.d.ts.map +1 -0
  42. package/dist/config/index.d.ts +7 -0
  43. package/dist/config/index.d.ts.map +1 -0
  44. package/dist/config/index.js +78 -0
  45. package/dist/config/index.js.map +1 -0
  46. package/dist/config/load.d.ts +12 -0
  47. package/dist/config/load.d.ts.map +1 -0
  48. package/dist/config/types.d.ts +64 -0
  49. package/dist/config/types.d.ts.map +1 -0
  50. package/dist/config/validate.d.ts +9 -0
  51. package/dist/config/validate.d.ts.map +1 -0
  52. package/dist/config/vite.d.ts +12 -0
  53. package/dist/config/vite.d.ts.map +1 -0
  54. package/dist/data/cache.d.ts +10 -0
  55. package/dist/data/cache.d.ts.map +1 -1
  56. package/dist/data/idempotency.d.ts.map +1 -1
  57. package/dist/data/index.d.ts +3 -1
  58. package/dist/data/index.d.ts.map +1 -1
  59. package/dist/data/testing.d.ts.map +1 -1
  60. package/dist/data/testing.js +94 -72
  61. package/dist/data/testing.js.map +1 -1
  62. package/dist/data/tiered.d.ts +7 -0
  63. package/dist/data/tiered.d.ts.map +1 -0
  64. package/dist/deployment/testing.d.ts +25 -0
  65. package/dist/deployment/testing.d.ts.map +1 -0
  66. package/dist/deployment/testing.js +171 -0
  67. package/dist/deployment/testing.js.map +1 -0
  68. package/dist/document/deferred-scripts.d.ts.map +1 -1
  69. package/dist/document/hydration.d.ts +9 -0
  70. package/dist/document/hydration.d.ts.map +1 -1
  71. package/dist/document/index.d.ts +5 -2
  72. package/dist/document/index.d.ts.map +1 -1
  73. package/dist/document/metadata.d.ts +8 -0
  74. package/dist/document/metadata.d.ts.map +1 -1
  75. package/dist/document/navigation.d.ts +28 -0
  76. package/dist/document/navigation.d.ts.map +1 -0
  77. package/dist/document/render.d.ts +3 -1
  78. package/dist/document/render.d.ts.map +1 -1
  79. package/dist/document/seo.d.ts.map +1 -1
  80. package/dist/document/trusted-types.d.ts +10 -0
  81. package/dist/document/trusted-types.d.ts.map +1 -0
  82. package/dist/edge/assets.d.ts.map +1 -1
  83. package/dist/edge/index.js +55 -73
  84. package/dist/edge/index.js.map +1 -1
  85. package/dist/index.d.ts +15 -13
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +2078 -573
  88. package/dist/index.js.map +1 -1
  89. package/dist/internal/testing.js +11 -11
  90. package/dist/kv/index.d.ts +4 -0
  91. package/dist/kv/index.d.ts.map +1 -1
  92. package/dist/kv/index.js +180 -60
  93. package/dist/kv/index.js.map +1 -1
  94. package/dist/kv/rate-limit-store.d.ts +8 -0
  95. package/dist/kv/rate-limit-store.d.ts.map +1 -0
  96. package/dist/kv/session-store.d.ts +20 -0
  97. package/dist/kv/session-store.d.ts.map +1 -0
  98. package/dist/kv/store.d.ts.map +1 -1
  99. package/dist/manifest.d.ts +10 -0
  100. package/dist/manifest.d.ts.map +1 -0
  101. package/dist/node/http.d.ts.map +1 -1
  102. package/dist/node/image.d.ts.map +1 -1
  103. package/dist/node/index.d.ts +3 -0
  104. package/dist/node/index.d.ts.map +1 -1
  105. package/dist/node/index.js +251 -178
  106. package/dist/node/index.js.map +1 -1
  107. package/dist/node/serve.d.ts +47 -0
  108. package/dist/node/serve.d.ts.map +1 -0
  109. package/dist/node/static.d.ts.map +1 -1
  110. package/dist/node/streaming.d.ts.map +1 -1
  111. package/dist/platform/fonts.d.ts.map +1 -1
  112. package/dist/platform/image-url.d.ts.map +1 -1
  113. package/dist/platform/images.d.ts.map +1 -1
  114. package/dist/platform/index.d.ts +5 -1
  115. package/dist/platform/index.d.ts.map +1 -1
  116. package/dist/platform/observability.d.ts +2 -1
  117. package/dist/platform/observability.d.ts.map +1 -1
  118. package/dist/platform/url.d.ts +19 -0
  119. package/dist/platform/url.d.ts.map +1 -0
  120. package/dist/platform/web-vitals-client.d.ts +32 -0
  121. package/dist/platform/web-vitals-client.d.ts.map +1 -0
  122. package/dist/platform/web-vitals.d.ts +78 -0
  123. package/dist/platform/web-vitals.d.ts.map +1 -0
  124. package/dist/redis/index.d.ts +4 -0
  125. package/dist/redis/index.d.ts.map +1 -1
  126. package/dist/redis/index.js +209 -54
  127. package/dist/redis/index.js.map +1 -1
  128. package/dist/redis/rate-limit-store.d.ts +8 -0
  129. package/dist/redis/rate-limit-store.d.ts.map +1 -0
  130. package/dist/redis/session-store.d.ts +9 -0
  131. package/dist/redis/session-store.d.ts.map +1 -0
  132. package/dist/redis/store.d.ts.map +1 -1
  133. package/dist/route/index.d.ts +2 -2
  134. package/dist/route/index.d.ts.map +1 -1
  135. package/dist/route/middleware.d.ts.map +1 -1
  136. package/dist/route/mutation.d.ts +97 -0
  137. package/dist/route/mutation.d.ts.map +1 -0
  138. package/dist/route/response.d.ts.map +1 -1
  139. package/dist/route/types.d.ts +6 -1
  140. package/dist/route/types.d.ts.map +1 -1
  141. package/dist/router/index.d.ts +1 -1
  142. package/dist/router/index.d.ts.map +1 -1
  143. package/dist/router/manifest.d.ts +9 -0
  144. package/dist/router/manifest.d.ts.map +1 -1
  145. package/dist/router/navigation-data.d.ts +9 -1
  146. package/dist/router/navigation-data.d.ts.map +1 -1
  147. package/dist/routing/generate.d.ts +3 -0
  148. package/dist/routing/generate.d.ts.map +1 -1
  149. package/dist/routing/index.d.ts +3 -1
  150. package/dist/routing/index.d.ts.map +1 -1
  151. package/dist/routing/locale.d.ts +43 -0
  152. package/dist/routing/locale.d.ts.map +1 -0
  153. package/dist/routing/types.d.ts +12 -0
  154. package/dist/routing/types.d.ts.map +1 -1
  155. package/dist/security/cookie-session.d.ts +43 -0
  156. package/dist/security/cookie-session.d.ts.map +1 -0
  157. package/dist/security/cookies.d.ts +26 -0
  158. package/dist/security/cookies.d.ts.map +1 -0
  159. package/dist/security/csrf.d.ts +1 -1
  160. package/dist/security/csrf.d.ts.map +1 -1
  161. package/dist/security/env-startup.d.ts +15 -0
  162. package/dist/security/env-startup.d.ts.map +1 -0
  163. package/dist/security/env.d.ts +25 -6
  164. package/dist/security/env.d.ts.map +1 -1
  165. package/dist/security/fetch-metadata.d.ts +29 -0
  166. package/dist/security/fetch-metadata.d.ts.map +1 -0
  167. package/dist/security/index.d.ts +14 -2
  168. package/dist/security/index.d.ts.map +1 -1
  169. package/dist/security/policy.d.ts.map +1 -1
  170. package/dist/security/rate-limit.d.ts +6 -3
  171. package/dist/security/rate-limit.d.ts.map +1 -1
  172. package/dist/security/report.d.ts.map +1 -1
  173. package/dist/security/request.d.ts.map +1 -1
  174. package/dist/security/session-manager.d.ts +32 -0
  175. package/dist/security/session-manager.d.ts.map +1 -0
  176. package/dist/security/session-store.d.ts +51 -0
  177. package/dist/security/session-store.d.ts.map +1 -0
  178. package/dist/security/testing.d.ts +10 -0
  179. package/dist/security/testing.d.ts.map +1 -0
  180. package/dist/security/testing.js +145 -0
  181. package/dist/security/testing.js.map +1 -0
  182. package/dist/security/types.d.ts +73 -3
  183. package/dist/security/types.d.ts.map +1 -1
  184. package/dist/server/document-shell.d.ts.map +1 -1
  185. package/dist/server/errors.d.ts +1 -0
  186. package/dist/server/errors.d.ts.map +1 -1
  187. package/dist/server/index.d.ts +2 -1
  188. package/dist/server/index.d.ts.map +1 -1
  189. package/dist/server/not-found.d.ts +1 -0
  190. package/dist/server/not-found.d.ts.map +1 -1
  191. package/dist/server/render-tree.d.ts.map +1 -1
  192. package/dist/server/request-handler.d.ts +10 -2
  193. package/dist/server/request-handler.d.ts.map +1 -1
  194. package/dist/server/request-metadata.d.ts +1 -0
  195. package/dist/server/request-metadata.d.ts.map +1 -1
  196. package/dist/server/ssr.d.ts +2 -0
  197. package/dist/server/ssr.d.ts.map +1 -1
  198. package/dist/static/index.d.ts +2 -0
  199. package/dist/static/index.d.ts.map +1 -1
  200. package/dist/static/index.js +380 -363
  201. package/dist/static/index.js.map +1 -1
  202. package/dist/static/preview.d.ts.map +1 -1
  203. package/dist/static/vercel.d.ts +11 -2
  204. package/dist/static/vercel.d.ts.map +1 -1
  205. package/dist/static-files.d.ts +12 -0
  206. package/dist/static-files.d.ts.map +1 -1
  207. package/dist/type-guards.d.ts +19 -0
  208. package/dist/type-guards.d.ts.map +1 -0
  209. package/dist/vite/env-boundary.d.ts +14 -0
  210. package/dist/vite/env-boundary.d.ts.map +1 -0
  211. package/dist/vite/index.d.ts +8 -3
  212. package/dist/vite/index.d.ts.map +1 -1
  213. package/dist/vite/index.js +22 -1196
  214. package/dist/vite/index.js.map +1 -1
  215. package/dist/vite/plugin.d.ts +8 -1
  216. package/dist/vite/plugin.d.ts.map +1 -1
  217. package/dist/vite/policy-verification.d.ts.map +1 -1
  218. package/dist/vite/route-audit.d.ts +50 -0
  219. package/dist/vite/route-audit.d.ts.map +1 -0
  220. package/package.json +19 -6
  221. package/dist/chunks/document-shell-D1xo6cEA.js +0 -35
  222. package/dist/chunks/document-shell-D1xo6cEA.js.map +0 -1
  223. package/dist/chunks/images-B9MqcjSA.js.map +0 -1
  224. package/dist/chunks/request-metadata-D5NrT8ks.js +0 -642
  225. package/dist/chunks/request-metadata-D5NrT8ks.js.map +0 -1
  226. package/dist/chunks/static-files-DUjHw-4H.js +0 -11
  227. package/dist/chunks/static-files-DUjHw-4H.js.map +0 -1
  228. package/dist/chunks/streaming-BQ1bykDo.js.map +0 -1
  229. package/dist/chunks/testing-B_iMFYz_.js +0 -3321
  230. package/dist/chunks/testing-B_iMFYz_.js.map +0 -1
  231. package/dist/route/action.d.ts +0 -33
  232. package/dist/route/action.d.ts.map +0 -1
@@ -0,0 +1,259 @@
1
+ import { i as h } from "./plugin-BQgMiHxa.js";
2
+ class v extends Error {
3
+ constructor(i, t) {
4
+ super(i, t), this.name = "DemiurgeConfigError";
5
+ }
6
+ }
7
+ const w = [
8
+ "assets",
9
+ "deployment",
10
+ "devtools",
11
+ "env",
12
+ "rendering",
13
+ "routing",
14
+ "security",
15
+ "unstable_viteConfig",
16
+ "vite"
17
+ ], D = {
18
+ assets: ["fonts", "images"],
19
+ deployment: ["outDir", "server", "static"],
20
+ "deployment.server": ["entry", "outDir"],
21
+ "deployment.static": ["origin", "provider"],
22
+ rendering: ["document", "styles"],
23
+ "rendering.document": ["lang", "title"],
24
+ routing: ["locales", "routesDir", "typedRoutes"],
25
+ security: ["staticFileHeaders"],
26
+ vite: ["define", "optimizeDeps", "plugins", "resolve"],
27
+ "vite.resolve": ["alias"]
28
+ };
29
+ function E(e, i) {
30
+ const t = { configFile: i };
31
+ y(t, "", e, "a configuration object");
32
+ const n = e;
33
+ b(t, "", n, w);
34
+ const o = l(t, n, "routing");
35
+ o && (f(t, "routing.routesDir", o.routesDir), p(t, "routing.locales", o.locales), j(t, o.typedRoutes));
36
+ const r = l(t, n, "rendering");
37
+ if (r) {
38
+ const s = l(t, r, "document", "rendering.");
39
+ if (s && (f(t, "rendering.document.lang", s.lang), f(t, "rendering.document.title", s.title)), r.styles !== void 0 && r.styles !== !1 && typeof r.styles != "string")
40
+ throw a(t, "rendering.styles", "false or a string", r.styles);
41
+ }
42
+ const d = l(t, n, "security");
43
+ if (d && d.staticFileHeaders !== void 0 && !Array.isArray(d.staticFileHeaders))
44
+ throw a(
45
+ t,
46
+ "security.staticFileHeaders",
47
+ "an array of header rules",
48
+ d.staticFileHeaders
49
+ );
50
+ const u = l(t, n, "assets");
51
+ if (u) {
52
+ if (u.fonts !== void 0 && !Array.isArray(u.fonts))
53
+ throw a(
54
+ t,
55
+ "assets.fonts",
56
+ "an array of font declarations from defineFonts()",
57
+ u.fonts
58
+ );
59
+ p(t, "assets.images", u.images);
60
+ }
61
+ const g = l(t, n, "deployment");
62
+ if (g) {
63
+ f(t, "deployment.outDir", g.outDir);
64
+ const s = l(t, g, "server", "deployment.");
65
+ if (s) {
66
+ if (typeof s.entry != "string" || !s.entry)
67
+ throw a(
68
+ t,
69
+ "deployment.server.entry",
70
+ "a path to the application server entry",
71
+ s.entry
72
+ );
73
+ f(t, "deployment.server.outDir", s.outDir);
74
+ }
75
+ const m = l(
76
+ t,
77
+ g,
78
+ "static",
79
+ "deployment."
80
+ );
81
+ m && (f(
82
+ t,
83
+ "deployment.static.origin",
84
+ m.origin
85
+ ), p(
86
+ t,
87
+ "deployment.static.provider",
88
+ m.provider
89
+ ));
90
+ }
91
+ if (n.devtools !== void 0 && typeof n.devtools != "boolean")
92
+ throw a(t, "devtools", "a boolean", n.devtools);
93
+ F(t, n.env);
94
+ const c = l(t, n, "vite");
95
+ if (c) {
96
+ if (c.plugins !== void 0 && !Array.isArray(c.plugins))
97
+ throw a(t, "vite.plugins", "an array of Vite plugins", c.plugins);
98
+ p(t, "vite.define", c.define), p(t, "vite.optimizeDeps", c.optimizeDeps);
99
+ const s = l(t, c, "resolve", "vite.");
100
+ if (s?.alias !== void 0 && !Array.isArray(s.alias) && (typeof s.alias != "object" || s.alias === null))
101
+ throw a(
102
+ t,
103
+ "vite.resolve.alias",
104
+ "an object of aliases or an array of alias entries",
105
+ s.alias
106
+ );
107
+ }
108
+ if (n.unstable_viteConfig !== void 0 && typeof n.unstable_viteConfig != "function")
109
+ throw a(
110
+ t,
111
+ "unstable_viteConfig",
112
+ "a function",
113
+ n.unstable_viteConfig
114
+ );
115
+ return n;
116
+ }
117
+ function l(e, i, t, n = "") {
118
+ const o = i[t];
119
+ if (o === void 0) return;
120
+ const r = `${n}${t}`;
121
+ y(e, r, o, "an object");
122
+ const d = o, u = D[r];
123
+ return u && b(e, r, d, u), d;
124
+ }
125
+ function b(e, i, t, n) {
126
+ for (const o of Object.keys(t))
127
+ if (!n.includes(o))
128
+ throw new v(
129
+ [
130
+ "Demiurge configuration is invalid.",
131
+ ` file: ${e.configFile}`,
132
+ ` field: ${i ? `${i}.${o}` : o}`,
133
+ " problem: this option does not exist",
134
+ ` known options: ${n.join(", ")}`
135
+ ].join(`
136
+ `)
137
+ );
138
+ }
139
+ function y(e, i, t, n) {
140
+ if (!t || typeof t != "object" || Array.isArray(t))
141
+ throw a(e, i, n, t);
142
+ }
143
+ function f(e, i, t) {
144
+ if (t !== void 0 && typeof t != "string")
145
+ throw a(e, i, "a string", t);
146
+ }
147
+ function p(e, i, t) {
148
+ t !== void 0 && y(e, i, t, "an object");
149
+ }
150
+ function j(e, i) {
151
+ if (i === void 0 || typeof i == "boolean") return;
152
+ y(e, "routing.typedRoutes", i, "a boolean or an object");
153
+ const t = i;
154
+ b(e, "routing.typedRoutes", t, ["outputFile"]), f(e, "routing.typedRoutes.outputFile", t.outputFile);
155
+ }
156
+ function F(e, i) {
157
+ if (i === void 0) return;
158
+ y(e, "env", i, "an environment schema");
159
+ const t = i;
160
+ for (const [n, o] of Object.entries(t))
161
+ if (!(o && typeof o == "object" && "parse" in o && typeof o.parse == "function"))
162
+ throw a(
163
+ e,
164
+ `env.${n}`,
165
+ "a variable from the env builders, such as env.string()",
166
+ o
167
+ );
168
+ }
169
+ function a(e, i, t, n) {
170
+ return new v(
171
+ [
172
+ "Demiurge configuration is invalid.",
173
+ ` file: ${e.configFile}`,
174
+ ` field: ${i || "(the default export)"}`,
175
+ i ? ` problem: this option must be ${t}` : ` problem: the default export must be ${t}`,
176
+ ` received: ${$(n)}`
177
+ ].join(`
178
+ `)
179
+ );
180
+ }
181
+ function $(e) {
182
+ return e === void 0 ? "undefined" : e === null ? "null" : typeof e == "function" ? "a function" : typeof e == "string" ? JSON.stringify(C(e)) : typeof e == "object" ? Array.isArray(e) ? `an array with ${e.length} items` : `an object with these keys: ${Object.keys(e).join(", ") || "(none)"}` : String(e);
183
+ }
184
+ function C(e) {
185
+ return e.length > 60 ? `${e.slice(0, 57)}...` : e;
186
+ }
187
+ async function S(e) {
188
+ const { config: i } = e, t = await O(e.loadReactPlugin), n = {
189
+ configFile: !1,
190
+ plugins: [
191
+ h(A(i)),
192
+ t(),
193
+ ...i.vite?.plugins ?? []
194
+ ],
195
+ root: i.root,
196
+ ...i.vite?.define ? { define: { ...i.vite.define } } : {},
197
+ ...i.vite?.optimizeDeps ? { optimizeDeps: i.vite.optimizeDeps } : {},
198
+ ...i.vite?.resolve?.alias ? { resolve: { alias: i.vite.resolve.alias } } : {}
199
+ }, o = e.overrides ? await R(n, e.overrides) : n;
200
+ if (!i.unstable_viteConfig) return o;
201
+ const r = await i.unstable_viteConfig(o);
202
+ if (!r || typeof r != "object" || Array.isArray(r))
203
+ throw new v(
204
+ [
205
+ "The unstable_viteConfig callback must return a Vite configuration object.",
206
+ ` file: ${i.configFile}`
207
+ ].join(`
208
+ `)
209
+ );
210
+ return r;
211
+ }
212
+ function A(e) {
213
+ return {
214
+ ...e.devtools === void 0 ? {} : { devtools: e.devtools },
215
+ ...e.rendering?.document ? { document: e.rendering.document } : {},
216
+ ...e.env ? { env: e.env } : {},
217
+ ...e.assets?.fonts ? { fonts: e.assets.fonts } : {},
218
+ ...e.assets?.images ? { images: e.assets.images } : {},
219
+ ...e.routing?.locales ? { locales: e.routing.locales } : {},
220
+ ...e.routing?.routesDir ? { routesDir: e.routing.routesDir } : {},
221
+ ...e.deployment?.static?.provider || e.security?.staticFileHeaders ? {
222
+ static: {
223
+ ...e.deployment?.static?.provider ? { deployment: e.deployment.static.provider } : {},
224
+ ...e.security?.staticFileHeaders ? { headers: e.security.staticFileHeaders } : {}
225
+ }
226
+ } : {},
227
+ ...e.rendering?.styles === void 0 ? {} : { styles: e.rendering.styles },
228
+ ...e.routing?.typedRoutes === void 0 ? {} : { typedRoutes: e.routing.typedRoutes }
229
+ };
230
+ }
231
+ async function R(e, i) {
232
+ const { mergeConfig: t } = await import("vite");
233
+ return t(e, i);
234
+ }
235
+ async function O(e) {
236
+ try {
237
+ return await (e ?? _)();
238
+ } catch (i) {
239
+ throw new v(
240
+ [
241
+ "Demiurge did not find @vitejs/plugin-react.",
242
+ " Demiurge generates the Vite configuration and needs the React plugin.",
243
+ " Add @vitejs/plugin-react to the development dependencies of the application."
244
+ ].join(`
245
+ `),
246
+ { cause: i }
247
+ );
248
+ }
249
+ }
250
+ async function _() {
251
+ return (await import("@vitejs/plugin-react")).default;
252
+ }
253
+ export {
254
+ v as D,
255
+ S as c,
256
+ A as t,
257
+ E as v
258
+ };
259
+ //# sourceMappingURL=vite-DO70kZA6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-DO70kZA6.js","sources":["../../src/config/validate.ts","../../src/config/vite.ts"],"sourcesContent":["import type { DemiurgeConfig } from \"./types\";\n\nexport class DemiurgeConfigError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"DemiurgeConfigError\";\n }\n}\n\nconst CONFIG_KEYS = [\n \"assets\",\n \"deployment\",\n \"devtools\",\n \"env\",\n \"rendering\",\n \"routing\",\n \"security\",\n \"unstable_viteConfig\",\n \"vite\",\n] as const;\n\nconst SECTION_KEYS: Record<string, readonly string[]> = {\n assets: [\"fonts\", \"images\"],\n deployment: [\"outDir\", \"server\", \"static\"],\n \"deployment.server\": [\"entry\", \"outDir\"],\n \"deployment.static\": [\"origin\", \"provider\"],\n rendering: [\"document\", \"styles\"],\n \"rendering.document\": [\"lang\", \"title\"],\n routing: [\"locales\", \"routesDir\", \"typedRoutes\"],\n security: [\"staticFileHeaders\"],\n vite: [\"define\", \"optimizeDeps\", \"plugins\", \"resolve\"],\n \"vite.resolve\": [\"alias\"],\n};\n\nexport function validateDemiurgeConfig(\n value: unknown,\n configFile: string,\n): DemiurgeConfig {\n const context = { configFile };\n assertPlainObject(context, \"\", value, \"a configuration object\");\n // TYPE-EVIDENCE: assertPlainObject threw unless the value is a non-array object. The cast reads its keys.\n const config = value as Record<string, unknown>;\n assertKnownKeys(context, \"\", config, CONFIG_KEYS);\n\n const routing = section(context, config, \"routing\");\n if (routing) {\n assertOptionalString(context, \"routing.routesDir\", routing.routesDir);\n assertOptionalObject(context, \"routing.locales\", routing.locales);\n assertTypedRoutes(context, routing.typedRoutes);\n }\n\n const rendering = section(context, config, \"rendering\");\n if (rendering) {\n const document = section(context, rendering, \"document\", \"rendering.\");\n if (document) {\n assertOptionalString(context, \"rendering.document.lang\", document.lang);\n assertOptionalString(context, \"rendering.document.title\", document.title);\n }\n if (\n rendering.styles !== undefined &&\n rendering.styles !== false &&\n typeof rendering.styles !== \"string\"\n ) {\n throw invalid(context, \"rendering.styles\", \"false or a string\", rendering.styles);\n }\n }\n\n const security = section(context, config, \"security\");\n if (security && security.staticFileHeaders !== undefined) {\n if (!Array.isArray(security.staticFileHeaders)) {\n throw invalid(\n context,\n \"security.staticFileHeaders\",\n \"an array of header rules\",\n security.staticFileHeaders,\n );\n }\n }\n\n const assets = section(context, config, \"assets\");\n if (assets) {\n if (assets.fonts !== undefined && !Array.isArray(assets.fonts)) {\n throw invalid(\n context,\n \"assets.fonts\",\n \"an array of font declarations from defineFonts()\",\n assets.fonts,\n );\n }\n assertOptionalObject(context, \"assets.images\", assets.images);\n }\n\n const deployment = section(context, config, \"deployment\");\n if (deployment) {\n assertOptionalString(context, \"deployment.outDir\", deployment.outDir);\n const server = section(context, deployment, \"server\", \"deployment.\");\n if (server) {\n if (typeof server.entry !== \"string\" || !server.entry) {\n throw invalid(\n context,\n \"deployment.server.entry\",\n \"a path to the application server entry\",\n server.entry,\n );\n }\n assertOptionalString(context, \"deployment.server.outDir\", server.outDir);\n }\n const staticDeployment = section(\n context,\n deployment,\n \"static\",\n \"deployment.\",\n );\n if (staticDeployment) {\n assertOptionalString(\n context,\n \"deployment.static.origin\",\n staticDeployment.origin,\n );\n assertOptionalObject(\n context,\n \"deployment.static.provider\",\n staticDeployment.provider,\n );\n }\n }\n\n if (config.devtools !== undefined && typeof config.devtools !== \"boolean\") {\n throw invalid(context, \"devtools\", \"a boolean\", config.devtools);\n }\n\n assertEnvSchema(context, config.env);\n\n const vite = section(context, config, \"vite\");\n if (vite) {\n if (vite.plugins !== undefined && !Array.isArray(vite.plugins)) {\n throw invalid(context, \"vite.plugins\", \"an array of Vite plugins\", vite.plugins);\n }\n assertOptionalObject(context, \"vite.define\", vite.define);\n assertOptionalObject(context, \"vite.optimizeDeps\", vite.optimizeDeps);\n const resolve = section(context, vite, \"resolve\", \"vite.\");\n if (\n resolve?.alias !== undefined &&\n !Array.isArray(resolve.alias) &&\n (typeof resolve.alias !== \"object\" || resolve.alias === null)\n ) {\n throw invalid(\n context,\n \"vite.resolve.alias\",\n \"an object of aliases or an array of alias entries\",\n resolve.alias,\n );\n }\n }\n\n if (\n config.unstable_viteConfig !== undefined &&\n typeof config.unstable_viteConfig !== \"function\"\n ) {\n throw invalid(\n context,\n \"unstable_viteConfig\",\n \"a function\",\n config.unstable_viteConfig,\n );\n }\n\n // TYPE-EVIDENCE: each field above matches the declared type or throws. The cast records that result.\n return config as DemiurgeConfig;\n}\n\ntype ValidationContext = {\n configFile: string;\n};\n\nfunction section(\n context: ValidationContext,\n parent: Record<string, unknown>,\n key: string,\n prefix = \"\",\n) {\n const value = parent[key];\n if (value === undefined) return undefined;\n const field = `${prefix}${key}`;\n assertPlainObject(context, field, value, \"an object\");\n // TYPE-EVIDENCE: assertPlainObject threw unless the value is a non-array object. The cast reads its keys.\n const record = value as Record<string, unknown>;\n const known = SECTION_KEYS[field];\n if (known) assertKnownKeys(context, field, record, known);\n return record;\n}\n\nfunction assertKnownKeys(\n context: ValidationContext,\n field: string,\n value: Record<string, unknown>,\n known: readonly string[],\n) {\n for (const key of Object.keys(value)) {\n if (known.includes(key)) continue;\n throw new DemiurgeConfigError(\n [\n \"Demiurge configuration is invalid.\",\n ` file: ${context.configFile}`,\n ` field: ${field ? `${field}.${key}` : key}`,\n \" problem: this option does not exist\",\n ` known options: ${known.join(\", \")}`,\n ].join(\"\\n\"),\n );\n }\n}\n\nfunction assertPlainObject(\n context: ValidationContext,\n field: string,\n value: unknown,\n expected: string,\n) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw invalid(context, field, expected, value);\n }\n}\n\nfunction assertOptionalString(\n context: ValidationContext,\n field: string,\n value: unknown,\n) {\n if (value !== undefined && typeof value !== \"string\") {\n throw invalid(context, field, \"a string\", value);\n }\n}\n\nfunction assertOptionalObject(\n context: ValidationContext,\n field: string,\n value: unknown,\n) {\n if (value === undefined) return;\n assertPlainObject(context, field, value, \"an object\");\n}\n\nfunction assertTypedRoutes(context: ValidationContext, value: unknown) {\n if (value === undefined || typeof value === \"boolean\") return;\n assertPlainObject(context, \"routing.typedRoutes\", value, \"a boolean or an object\");\n // TYPE-EVIDENCE: assertPlainObject threw unless the value is a non-array object. The cast reads its keys.\n const record = value as Record<string, unknown>;\n assertKnownKeys(context, \"routing.typedRoutes\", record, [\"outputFile\"]);\n assertOptionalString(context, \"routing.typedRoutes.outputFile\", record.outputFile);\n}\n\nfunction assertEnvSchema(context: ValidationContext, value: unknown) {\n if (value === undefined) return;\n assertPlainObject(context, \"env\", value, \"an environment schema\");\n // TYPE-EVIDENCE: assertPlainObject threw unless the value is a non-array object. The cast reads its entries.\n const schema = value as Record<string, unknown>;\n for (const [key, variable] of Object.entries(schema)) {\n if (\n variable &&\n typeof variable === \"object\" &&\n \"parse\" in variable &&\n typeof variable.parse === \"function\"\n ) {\n continue;\n }\n throw invalid(\n context,\n `env.${key}`,\n \"a variable from the env builders, such as env.string()\",\n variable,\n );\n }\n}\n\nfunction invalid(\n context: ValidationContext,\n field: string,\n expected: string,\n value: unknown,\n) {\n return new DemiurgeConfigError(\n [\n \"Demiurge configuration is invalid.\",\n ` file: ${context.configFile}`,\n ` field: ${field || \"(the default export)\"}`,\n field\n ? ` problem: this option must be ${expected}`\n : ` problem: the default export must be ${expected}`,\n ` received: ${describeValue(value)}`,\n ].join(\"\\n\"),\n );\n}\n\nexport function describeValue(value: unknown) {\n if (value === undefined) return \"undefined\";\n if (value === null) return \"null\";\n if (typeof value === \"function\") return \"a function\";\n if (typeof value === \"string\") return JSON.stringify(truncate(value));\n if (typeof value === \"object\") {\n return Array.isArray(value)\n ? `an array with ${value.length} items`\n : `an object with these keys: ${Object.keys(value).join(\", \") || \"(none)\"}`;\n }\n return String(value);\n}\n\nfunction truncate(value: string) {\n return value.length > 60 ? `${value.slice(0, 57)}...` : value;\n}\n","import type { InlineConfig, PluginOption, UserConfig } from \"vite\";\nimport { demiurge, type DemiurgeVitePluginOptions } from \"../vite/plugin\";\nimport type { DemiurgeConfig, ResolvedDemiurgeConfig } from \"./types\";\nimport { DemiurgeConfigError } from \"./validate\";\n\nexport type ReactPluginLoader = () => Promise<(...args: never[]) => PluginOption>;\n\nexport type CreateDemiurgeViteConfigOptions = {\n config: ResolvedDemiurgeConfig;\n loadReactPlugin?: ReactPluginLoader;\n overrides?: InlineConfig;\n};\n\n// The framework generates the Vite configuration from the application\n// configuration. Applications do not author a Vite configuration file.\nexport async function createDemiurgeViteConfig(\n options: CreateDemiurgeViteConfigOptions,\n): Promise<InlineConfig> {\n const { config } = options;\n const react = await loadReactPluginOrFail(options.loadReactPlugin);\n\n const generated: InlineConfig = {\n configFile: false,\n plugins: [\n demiurge(toPluginOptions(config)),\n react(),\n ...(config.vite?.plugins ?? []),\n ],\n root: config.root,\n ...(config.vite?.define ? { define: { ...config.vite.define } } : {}),\n ...(config.vite?.optimizeDeps\n ? { optimizeDeps: config.vite.optimizeDeps }\n : {}),\n ...(config.vite?.resolve?.alias\n ? { resolve: { alias: config.vite.resolve.alias } }\n : {}),\n };\n\n const merged = options.overrides\n ? await mergeViteConfig(generated, options.overrides)\n : generated;\n\n if (!config.unstable_viteConfig) return merged;\n\n // TYPE-EVIDENCE: InlineConfig extends UserConfig with command options only. The callback reads the same fields.\n const extended = await config.unstable_viteConfig(merged as UserConfig);\n if (!extended || typeof extended !== \"object\" || Array.isArray(extended)) {\n throw new DemiurgeConfigError(\n [\n \"The unstable_viteConfig callback must return a Vite configuration object.\",\n ` file: ${config.configFile}`,\n ].join(\"\\n\"),\n );\n }\n\n // TYPE-EVIDENCE: the check above rejected every value that is not a configuration object. The cast records that result.\n return extended as InlineConfig;\n}\n\n// The plugin keeps the flat option shape. The configuration boundaries map\n// onto it here, so the boundaries stay the application-facing contract.\nexport function toPluginOptions(\n config: DemiurgeConfig,\n): DemiurgeVitePluginOptions {\n return {\n ...(config.devtools === undefined ? {} : { devtools: config.devtools }),\n ...(config.rendering?.document\n ? { document: config.rendering.document }\n : {}),\n ...(config.env ? { env: config.env } : {}),\n ...(config.assets?.fonts ? { fonts: config.assets.fonts } : {}),\n ...(config.assets?.images ? { images: config.assets.images } : {}),\n ...(config.routing?.locales ? { locales: config.routing.locales } : {}),\n ...(config.routing?.routesDir\n ? { routesDir: config.routing.routesDir }\n : {}),\n ...(config.deployment?.static?.provider || config.security?.staticFileHeaders\n ? {\n static: {\n ...(config.deployment?.static?.provider\n ? { deployment: config.deployment.static.provider }\n : {}),\n ...(config.security?.staticFileHeaders\n ? { headers: config.security.staticFileHeaders }\n : {}),\n },\n }\n : {}),\n ...(config.rendering?.styles === undefined\n ? {}\n : { styles: config.rendering.styles }),\n ...(config.routing?.typedRoutes === undefined\n ? {}\n : { typedRoutes: config.routing.typedRoutes }),\n };\n}\n\nasync function mergeViteConfig(base: InlineConfig, overrides: InlineConfig) {\n const { mergeConfig } = await import(\"vite\");\n // TYPE-EVIDENCE: mergeConfig returns the merge of two InlineConfig values. The cast restores that type from its Record signature.\n return mergeConfig(base, overrides) as InlineConfig;\n}\n\nasync function loadReactPluginOrFail(loader?: ReactPluginLoader) {\n try {\n return await (loader ?? loadReactPlugin)();\n } catch (error) {\n throw new DemiurgeConfigError(\n [\n \"Demiurge did not find @vitejs/plugin-react.\",\n \" Demiurge generates the Vite configuration and needs the React plugin.\",\n \" Add @vitejs/plugin-react to the development dependencies of the application.\",\n ].join(\"\\n\"),\n { cause: error },\n );\n }\n}\n\nasync function loadReactPlugin(): Promise<(...args: never[]) => PluginOption> {\n const module: { default: (...args: never[]) => PluginOption } = await import(\n \"@vitejs/plugin-react\"\n );\n return module.default;\n}\n"],"names":["DemiurgeConfigError","message","options","CONFIG_KEYS","SECTION_KEYS","validateDemiurgeConfig","value","configFile","context","assertPlainObject","config","assertKnownKeys","routing","section","assertOptionalString","assertOptionalObject","assertTypedRoutes","rendering","document","invalid","security","assets","deployment","server","staticDeployment","assertEnvSchema","vite","resolve","parent","key","prefix","field","record","known","expected","schema","variable","describeValue","truncate","createDemiurgeViteConfig","react","loadReactPluginOrFail","generated","demiurge","toPluginOptions","merged","mergeViteConfig","extended","base","overrides","mergeConfig","loader","loadReactPlugin","error"],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,42 +1,34 @@
1
1
  import type { InlineConfig } from "vite";
2
+ import type { ResolvedDemiurgeConfig } from "./config/types";
2
3
  import { type GenerateStaticOutputOptions, type StaticOutputManifest } from "./static";
4
+ export { parseClientManifest } from "./manifest";
5
+ export type { ClientBuildManifest } from "./manifest";
3
6
  type CliEnvironment = Record<string, string | undefined>;
4
7
  export type CliOptions = {
5
- command: "build" | "help" | "preview";
8
+ command: "build" | "dev" | "help" | "preview";
6
9
  host: string;
7
10
  origin?: string;
8
- outDir: string;
11
+ outDir?: string;
9
12
  port: number;
10
13
  };
11
- type StaticBuildRuntime = {
14
+ export type BuildRuntime = {
12
15
  build: (config: InlineConfig) => Promise<unknown>;
16
+ createViteConfig: (overrides: InlineConfig) => Promise<InlineConfig>;
13
17
  generate: (options: GenerateStaticOutputOptions) => Promise<StaticOutputManifest>;
14
18
  importModule: (specifier: string) => Promise<Record<string, unknown>>;
15
19
  now: () => number;
16
20
  readText: (file: string) => Promise<string>;
17
- resolveConfig: () => Promise<{
18
- plugins?: Array<{
19
- api?: unknown;
20
- name: string;
21
- }>;
22
- publicDir: false | string;
23
- root: string;
24
- }>;
25
21
  };
26
- export declare function parseCliArguments(arguments_: string[], environment?: CliEnvironment): CliOptions;
27
- export declare const helpText = "Usage: demiurge <command> [options]\n\nCommands:\n build Build static production output\n preview Serve static output with its declared headers\n\nOptions:\n --host <host> Set the preview host (default: localhost)\n --origin <origin> Set the build origin (default: SITE_ORIGIN)\n --out-dir <directory> Set the output directory (default: dist)\n --port <port> Set the preview port (default: 4173)\n -h, --help Show this help";
28
- export declare function buildStaticSite(options: CliOptions, runtime?: StaticBuildRuntime): Promise<{
29
- deploymentOutDir: string | undefined;
30
- manifest: StaticOutputManifest;
22
+ export type BuildResult = {
23
+ deploymentOutDir?: string;
24
+ manifest?: StaticOutputManifest;
31
25
  outDir: string;
32
- }>;
33
- export declare function resolvePreviewOutputDirectory(outDir: string, resolveConfig?: () => Promise<{
34
- root: string;
35
- }>): Promise<string>;
36
- export declare function validateBuildOutputDirectory(root: string, outDir: string, publicDir: false | string, serverOutDir: string): Promise<void>;
37
- export declare function parseClientManifest(source: string): {
38
- clientEntry: string;
39
- styles: string[];
26
+ serverOutDir?: string;
40
27
  };
41
- export {};
28
+ export declare function parseCliArguments(arguments_: string[], environment?: CliEnvironment): CliOptions;
29
+ export declare const helpText = "Usage: demiurge <command> [options]\n\nCommands:\n dev Start the development server\n build Build production output\n preview Serve static output with its declared headers\n\nOptions:\n --host <host> Set the server host (default: localhost)\n --origin <origin> Set the build origin (default: SITE_ORIGIN)\n --out-dir <directory> Set the client output directory (default: dist)\n --port <port> Set the server port (dev: 5173, preview: 4173)\n -h, --help Show this help\n\nDemiurge reads demiurge.config.ts from the project root.";
30
+ export declare function runDev(options: CliOptions, config: ResolvedDemiurgeConfig): Promise<import("vite").ViteDevServer>;
31
+ export declare function runBuild(options: CliOptions, config: ResolvedDemiurgeConfig, runtime?: BuildRuntime): Promise<BuildResult>;
32
+ export declare function resolvePreviewOutputDirectory(root: string, outDir: string | undefined, configuredOutDir?: string): string;
33
+ export declare function validateBuildOutputDirectory(root: string, outDir: string, publicDir: false | string, serverOutDir: string): Promise<void>;
42
34
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,OAAO,EAGL,KAAK,2BAA2B,EAEhC,KAAK,oBAAoB,EAE1B,MAAM,UAAU,CAAC;AAElB,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAIzD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,EAAE,CACR,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtE,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,OAAO,CAAC;QAC3B,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,GAAG,CAAC,EAAE,OAAO,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;SACd,CAAC,CAAC;QACH,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,GAAE,cAAmB,GAC/B,UAAU,CA8CZ;AAED,eAAO,MAAM,QAAQ,gfAWkB,CAAC;AAExC,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,kBAAkB;;;;GA2E7B;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,mBAMhD;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,GAAG,MAAM,EACzB,YAAY,EAAE,MAAM,iBAqCrB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM;;;EAmBjD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG7D,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EAC1B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAUzD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,gBAAgB,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrE,QAAQ,EAAE,CACR,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtE,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,GAAE,cAAmB,GAC/B,UAAU,CA+CZ;AAED,eAAO,MAAM,QAAQ,2mBAcoC,CAAC;AAE1D,wBAAsB,MAAM,CAC1B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,sBAAsB,yCAc/B;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAkEtB;AA6ED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,gBAAgB,CAAC,EAAE,MAAM,UAG1B;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,GAAG,MAAM,EACzB,YAAY,EAAE,MAAM,iBAqCrB"}