@solidjs/start 1.2.0 → 2.0.0-alpha.0

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 (184) hide show
  1. package/README.md +88 -8
  2. package/dist/client/StartClient.d.ts +0 -1
  3. package/dist/client/StartClient.jsx +2 -4
  4. package/dist/client/index.d.ts +2 -3
  5. package/dist/client/index.jsx +2 -4
  6. package/dist/client/mount.js +10 -2
  7. package/dist/client/spa/index.d.ts +1 -2
  8. package/dist/client/spa/index.jsx +1 -2
  9. package/dist/config/constants.d.ts +16 -0
  10. package/dist/config/constants.js +16 -0
  11. package/dist/config/dev-server.d.ts +2 -0
  12. package/dist/config/dev-server.js +108 -0
  13. package/dist/config/fs-router.d.ts +37 -0
  14. package/dist/config/fs-router.js +153 -0
  15. package/dist/config/fs-routes/fs-watcher.d.ts +3 -0
  16. package/dist/config/fs-routes/fs-watcher.js +49 -0
  17. package/dist/config/fs-routes/index.d.ts +7 -0
  18. package/dist/config/fs-routes/index.js +109 -0
  19. package/dist/config/fs-routes/router.d.ts +37 -0
  20. package/dist/config/fs-routes/router.js +136 -0
  21. package/dist/config/fs-routes/tree-shake.d.ts +2 -0
  22. package/dist/config/fs-routes/tree-shake.js +357 -0
  23. package/dist/config/index.d.ts +10 -0
  24. package/dist/config/index.js +217 -0
  25. package/dist/config/lazy.d.ts +3 -0
  26. package/dist/config/lazy.js +82 -0
  27. package/dist/config/manifest.d.ts +3 -0
  28. package/dist/config/manifest.js +74 -0
  29. package/dist/config/utils.d.ts +4 -0
  30. package/dist/config/utils.js +6 -0
  31. package/dist/config/vite-utils.d.ts +16 -0
  32. package/dist/config/vite-utils.js +81 -0
  33. package/dist/http/index.d.ts +84 -0
  34. package/dist/http/index.js +131 -0
  35. package/dist/index.d.ts +6 -5
  36. package/dist/index.jsx +5 -5
  37. package/dist/middleware/index.d.ts +6 -6
  38. package/dist/middleware/index.js +39 -0
  39. package/dist/{router/FileRoutes.js → router.jsx} +5 -6
  40. package/dist/server/StartServer.d.ts +3 -3
  41. package/dist/server/StartServer.jsx +9 -63
  42. package/dist/server/assets/index.d.ts +2 -0
  43. package/dist/server/assets/index.js +52 -0
  44. package/dist/server/assets/render.d.ts +19 -0
  45. package/dist/server/{renderAsset.jsx → assets/render.jsx} +1 -1
  46. package/dist/server/collect-styles.d.ts +3 -0
  47. package/dist/server/collect-styles.js +69 -0
  48. package/dist/server/fetchEvent.d.ts +4 -3
  49. package/dist/server/fetchEvent.js +12 -74
  50. package/dist/server/fetchEvent.spec.js +18 -197
  51. package/dist/server/handler.d.ts +6 -12
  52. package/dist/server/handler.js +180 -97
  53. package/dist/server/index.d.ts +8 -6
  54. package/dist/server/index.jsx +14 -6
  55. package/dist/server/manifest/client-manifest.d.ts +9 -0
  56. package/dist/server/manifest/client-manifest.js +6 -0
  57. package/dist/server/manifest/dev-client-manifest.d.ts +4 -0
  58. package/dist/server/manifest/dev-client-manifest.js +24 -0
  59. package/dist/server/manifest/dev-ssr-manifest.d.ts +5 -0
  60. package/dist/server/manifest/dev-ssr-manifest.js +23 -0
  61. package/dist/server/manifest/prod-client-manifest.d.ts +5 -0
  62. package/dist/server/manifest/prod-client-manifest.js +26 -0
  63. package/dist/server/manifest/prod-ssr-manifest.d.ts +6 -0
  64. package/dist/server/manifest/prod-ssr-manifest.js +90 -0
  65. package/dist/server/manifest/ssr-manifest.d.ts +4 -0
  66. package/dist/server/manifest/ssr-manifest.js +6 -0
  67. package/dist/{router → server}/routes.d.ts +5 -10
  68. package/dist/{router → server}/routes.js +35 -36
  69. package/dist/{runtime → server}/server-fns-runtime.d.ts +1 -1
  70. package/dist/{runtime → server}/server-fns-runtime.js +7 -6
  71. package/dist/server/server-functions-handler.d.ts +2 -0
  72. package/dist/{runtime/server-handler.js → server/server-functions-handler.js} +65 -100
  73. package/dist/server/server-runtime.d.ts +3 -0
  74. package/dist/{runtime → server}/server-runtime.js +9 -16
  75. package/dist/server/spa/StartServer.d.ts +1 -1
  76. package/dist/server/spa/StartServer.jsx +7 -9
  77. package/dist/server/spa/handler.d.ts +3 -3
  78. package/dist/server/spa/handler.js +9 -11
  79. package/dist/server/spa/index.d.ts +4 -3
  80. package/dist/server/spa/index.jsx +4 -3
  81. package/dist/server/types.d.ts +7 -9
  82. package/dist/server/util.d.ts +2 -0
  83. package/dist/server/util.js +8 -0
  84. package/dist/shared/ErrorBoundary.jsx +2 -2
  85. package/dist/shared/HttpHeader.jsx +4 -2
  86. package/dist/shared/{HttpStatusCode.jsx → HttpStatusCode.js} +3 -1
  87. package/dist/shared/dev-overlay/DevOverlayDialog.d.ts +2 -2
  88. package/dist/shared/dev-overlay/DevOverlayDialog.jsx +75 -66
  89. package/dist/shared/dev-overlay/createStackFrame.js +3 -3
  90. package/dist/shared/dev-overlay/index.jsx +5 -8
  91. package/dist/shared/lazy.d.ts +3 -0
  92. package/dist/shared/lazy.js +40 -0
  93. package/dist/shared/serverFunction.d.ts +1 -1
  94. package/package.json +45 -67
  95. package/scripts/build.js +15 -0
  96. package/scripts/validate-imports.js +316 -0
  97. package/src/client/StartClient.tsx +34 -0
  98. package/src/client/index.tsx +2 -0
  99. package/src/client/mount.ts +114 -0
  100. package/src/client/spa/index.tsx +9 -0
  101. package/src/config/constants.ts +19 -0
  102. package/src/config/dev-server.ts +149 -0
  103. package/src/config/fs-router.ts +177 -0
  104. package/src/config/fs-routes/fs-watcher.ts +81 -0
  105. package/src/config/fs-routes/index.ts +138 -0
  106. package/src/config/fs-routes/router.ts +169 -0
  107. package/src/config/fs-routes/tree-shake.ts +392 -0
  108. package/src/config/index.ts +236 -0
  109. package/src/config/lazy.ts +100 -0
  110. package/src/config/manifest.ts +84 -0
  111. package/src/config/utils.ts +5 -0
  112. package/src/config/vite-utils.ts +113 -0
  113. package/src/env.d.ts +35 -0
  114. package/src/http/index.ts +253 -0
  115. package/src/index.tsx +19 -0
  116. package/src/internal.d.ts +14 -0
  117. package/src/middleware/index.ts +82 -0
  118. package/src/router.tsx +36 -0
  119. package/src/server/StartServer.tsx +62 -0
  120. package/src/server/assets/index.ts +70 -0
  121. package/src/server/assets/render.tsx +42 -0
  122. package/src/server/collect-styles.ts +94 -0
  123. package/src/server/fetchEvent.spec.ts +89 -0
  124. package/src/server/fetchEvent.ts +36 -0
  125. package/src/server/handler.ts +250 -0
  126. package/src/server/index.tsx +16 -0
  127. package/src/server/manifest/client-manifest.ts +8 -0
  128. package/src/server/manifest/dev-client-manifest.ts +19 -0
  129. package/src/server/manifest/dev-ssr-manifest.ts +21 -0
  130. package/src/server/manifest/prod-client-manifest.ts +18 -0
  131. package/src/server/manifest/prod-ssr-manifest.ts +125 -0
  132. package/src/server/manifest/ssr-manifest.ts +8 -0
  133. package/src/server/routes.ts +138 -0
  134. package/src/server/server-fns-runtime.ts +31 -0
  135. package/src/server/server-functions-handler.ts +364 -0
  136. package/src/server/server-runtime.ts +240 -0
  137. package/src/server/spa/StartServer.tsx +40 -0
  138. package/src/server/spa/handler.ts +29 -0
  139. package/src/server/spa/index.tsx +5 -0
  140. package/src/server/types.ts +82 -0
  141. package/src/server/util.ts +12 -0
  142. package/src/shared/ErrorBoundary.tsx +52 -0
  143. package/src/shared/GET.ts +8 -0
  144. package/src/shared/HttpHeader.tsx +42 -0
  145. package/src/shared/HttpStatusCode.ts +27 -0
  146. package/src/shared/clientOnly.ts +44 -0
  147. package/src/shared/dev-overlay/CodeView.tsx +95 -0
  148. package/src/shared/dev-overlay/DevOverlayDialog.tsx +316 -0
  149. package/src/shared/dev-overlay/createStackFrame.ts +77 -0
  150. package/src/shared/dev-overlay/download.ts +6 -0
  151. package/src/shared/dev-overlay/env.d.ts +4 -0
  152. package/src/shared/dev-overlay/get-source-map.ts +35 -0
  153. package/src/shared/dev-overlay/icons.tsx +288 -0
  154. package/src/shared/dev-overlay/index.tsx +63 -0
  155. package/src/shared/dev-overlay/styles.css +292 -0
  156. package/src/shared/lazy.ts +51 -0
  157. package/src/shared/serverFunction.ts +10 -0
  158. package/src/virtual.d.ts +27 -0
  159. package/tsconfig.json +23 -0
  160. package/vitest.config.ts +9 -0
  161. package/config/fs-router.js +0 -142
  162. package/config/index.d.ts +0 -40
  163. package/config/index.js +0 -304
  164. package/config/server-components.js +0 -106
  165. package/dist/client/islands.d.ts +0 -7
  166. package/dist/client/islands.jsx +0 -10
  167. package/dist/middleware/index.jsx +0 -35
  168. package/dist/router/index.d.ts +0 -1
  169. package/dist/router/index.jsx +0 -2
  170. package/dist/router/lazyRoute.d.ts +0 -6
  171. package/dist/router/lazyRoute.js +0 -53
  172. package/dist/runtime/server-handler.d.ts +0 -2
  173. package/dist/runtime/server-runtime.d.ts +0 -3
  174. package/dist/server/islands/index.d.ts +0 -19
  175. package/dist/server/islands/index.jsx +0 -62
  176. package/dist/server/islands/utils.d.ts +0 -1
  177. package/dist/server/islands/utils.jsx +0 -85
  178. package/dist/server/pageEvent.d.ts +0 -2
  179. package/dist/server/pageEvent.js +0 -56
  180. package/dist/server/renderAsset.d.ts +0 -2
  181. package/env.d.ts +0 -26
  182. /package/dist/{router/FileRoutes.d.ts → router.d.ts} +0 -0
  183. /package/dist/shared/{clientOnly.jsx → clientOnly.js} +0 -0
  184. /package/dist/shared/{serverFunction.jsx → serverFunction.js} +0 -0
package/config/index.js DELETED
@@ -1,304 +0,0 @@
1
- import { createTanStackServerFnPlugin } from "@tanstack/server-functions-plugin";
2
- import defu from "defu";
3
- import { existsSync } from "node:fs";
4
- import { join } from "node:path";
5
- import { fileURLToPath } from "node:url";
6
- import { createApp, resolve } from "vinxi";
7
- import { normalize } from "vinxi/lib/path";
8
- import { config } from "vinxi/plugins/config";
9
- import solid from "vite-plugin-solid";
10
- import { SolidStartClientFileRouter, SolidStartServerFileRouter } from "./fs-router.js";
11
- import { serverComponents } from "./server-components.js";
12
-
13
- const DEFAULT_EXTENSIONS = ["js", "jsx", "ts", "tsx"];
14
-
15
- function solidStartClientFsRouter(config) {
16
- return (router, app) =>
17
- new SolidStartClientFileRouter(
18
- {
19
- dir: resolve.absolute(config.dir, router.root),
20
- extensions: config.extensions ?? DEFAULT_EXTENSIONS
21
- },
22
- router,
23
- app
24
- );
25
- }
26
-
27
- function solidStartServerFsRouter(config) {
28
- return (router, app) =>
29
- new SolidStartServerFileRouter(
30
- {
31
- dir: resolve.absolute(config.dir, router.root),
32
- extensions: config.extensions ?? DEFAULT_EXTENSIONS,
33
- dataOnly: config.dataOnly
34
- },
35
- router,
36
- app
37
- );
38
- }
39
-
40
- const SolidStartServerFnsPlugin = createTanStackServerFnPlugin({
41
- // This is the ID that will be available to look up and import
42
- // our server function manifest and resolve its module
43
- manifestVirtualImportId: "solidstart:server-fn-manifest",
44
- client: {
45
- getRuntimeCode: () =>
46
- `import { createServerReference } from "${normalize(
47
- fileURLToPath(new URL("../dist/runtime/server-runtime.js", import.meta.url))
48
- )}"`,
49
- replacer: opts =>
50
- `createServerReference(${() => {}}, '${opts.functionId}', '${opts.extractedFilename}')`
51
- },
52
- ssr: {
53
- getRuntimeCode: () =>
54
- `import { createServerReference } from '${normalize(
55
- fileURLToPath(new URL("../dist/runtime/server-fns-runtime.js", import.meta.url))
56
- )}'`,
57
- replacer: opts =>
58
- `createServerReference(${opts.fn}, '${opts.functionId}', '${opts.extractedFilename}')`
59
- },
60
- server: {
61
- getRuntimeCode: () =>
62
- `import { createServerReference } from '${normalize(
63
- fileURLToPath(new URL("../dist/runtime/server-fns-runtime.js", import.meta.url))
64
- )}'`,
65
- replacer: opts =>
66
- `createServerReference(${opts.fn}, '${opts.functionId}', '${opts.extractedFilename}')`
67
- }
68
- });
69
-
70
- export function defineConfig(baseConfig = {}) {
71
- let { vite = {}, ...start } = baseConfig;
72
- const extensions = [...DEFAULT_EXTENSIONS, ...(start.extensions || [])];
73
- start = defu(start, {
74
- publicDir: "./public",
75
- appRoot: "./src",
76
- routeDir: "./routes",
77
- ssr: true,
78
- devOverlay: true,
79
- experimental: {
80
- islands: false
81
- },
82
- solid: {},
83
- server: {
84
- routeRules: {
85
- "/_build/assets/**": { headers: { "cache-control": "public, immutable, max-age=31536000" } }
86
- },
87
- experimental: {
88
- asyncContext: true
89
- }
90
- }
91
- });
92
- const routeDir = join(start.appRoot, start.routeDir);
93
- let server = start.server;
94
- if (!start.ssr) {
95
- server = { ...server, prerender: { routes: ["/"] } };
96
- }
97
- let entryExtension = ".tsx";
98
- if (existsSync(join(process.cwd(), start.appRoot, "app.jsx"))) {
99
- entryExtension = ".jsx";
100
- }
101
-
102
- return createApp({
103
- server: {
104
- compressPublicAssets: {
105
- brotli: process.versions.bun ? false : true
106
- },
107
- ...server
108
- },
109
- routers: [
110
- {
111
- name: "public",
112
- type: "static",
113
- base: "/",
114
- dir: start.publicDir
115
- },
116
- {
117
- name: "ssr",
118
- type: "http",
119
- link: {
120
- client: start.experimental.islands ? undefined : "client"
121
- },
122
- handler: `${start.appRoot}/entry-server${entryExtension}`,
123
- middleware: start.middleware,
124
- routes: solidStartServerFsRouter({ dir: routeDir, extensions, dataOnly: !start.ssr }),
125
- extensions,
126
- target: "server",
127
- plugins: async () => {
128
- const userConfig =
129
- typeof vite === "function" ? await vite({ router: "server" }) : { ...vite };
130
- const plugins = userConfig.plugins || [];
131
- delete userConfig.plugins;
132
- return [
133
- config("user", {
134
- ...userConfig,
135
- optimizeDeps: {
136
- ...(userConfig.optimizeDeps || {}),
137
- include: [
138
- ...(userConfig.optimizeDeps?.include || []),
139
- "@solidjs/start > source-map-js",
140
- "@solidjs/start > error-stack-parser"
141
- ]
142
- }
143
- }),
144
- ...plugins,
145
- SolidStartServerFnsPlugin.ssr,
146
- start.experimental.islands ? serverComponents.server() : null,
147
- solid({ ...start.solid, ssr: true, extensions: extensions.map(ext => `.${ext}`) }),
148
- config("app-server", {
149
- resolve: {
150
- alias: {
151
- "#start/app": join(process.cwd(), start.appRoot, `app${entryExtension}`),
152
- "~": join(process.cwd(), start.appRoot),
153
- ...(!start.ssr
154
- ? {
155
- "@solidjs/start/server": "@solidjs/start/server/spa"
156
- }
157
- : {}),
158
- ...userConfig.resolve?.alias
159
- }
160
- },
161
- cacheDir: "node_modules/.vinxi/server",
162
- define: {
163
- "import.meta.env.START_APP": JSON.stringify(
164
- `${start.appRoot}/app${entryExtension}`
165
- ),
166
- "import.meta.env.START_ISLANDS": JSON.stringify(start.experimental.islands),
167
- "import.meta.env.SSR": JSON.stringify(true),
168
- "import.meta.env.START_SSR": JSON.stringify(start.ssr),
169
- "import.meta.env.START_DEV_OVERLAY": JSON.stringify(start.devOverlay),
170
- ...userConfig.define
171
- }
172
- })
173
- ];
174
- }
175
- },
176
- {
177
- name: "client",
178
- type: "client",
179
- base: "/_build",
180
- handler: `${start.appRoot}/entry-client${entryExtension}`,
181
- ...(start.experimental.islands
182
- ? {}
183
- : {
184
- routes: solidStartClientFsRouter({ dir: routeDir, extensions })
185
- }),
186
- extensions,
187
- target: "browser",
188
- plugins: async () => {
189
- const userConfig =
190
- typeof vite === "function" ? await vite({ router: "client" }) : { ...vite };
191
- const plugins = userConfig.plugins || [];
192
- delete userConfig.plugins;
193
- return [
194
- config("user", {
195
- ...userConfig,
196
- optimizeDeps: {
197
- ...(userConfig.optimizeDeps || {}),
198
- include: [
199
- ...(userConfig.optimizeDeps?.include || []),
200
- "@solidjs/start > source-map-js",
201
- "@solidjs/start > error-stack-parser"
202
- ]
203
- }
204
- }),
205
- ...plugins,
206
- SolidStartServerFnsPlugin.client,
207
- start.experimental.islands ? serverComponents.client() : null,
208
- solid({ ...start.solid, ssr: start.ssr, extensions: extensions.map(ext => `.${ext}`) }),
209
- config("app-client", {
210
- resolve: {
211
- alias: {
212
- "#start/app": join(process.cwd(), start.appRoot, `app${entryExtension}`),
213
- "~": join(process.cwd(), start.appRoot),
214
- ...(start.experimental.islands
215
- ? {
216
- "@solidjs/start/client": "@solidjs/start/client/islands"
217
- }
218
- : {}),
219
- ...(!start.ssr
220
- ? {
221
- "@solidjs/start/client": "@solidjs/start/client/spa"
222
- }
223
- : {}),
224
- ...userConfig.resolve?.alias
225
- }
226
- },
227
- cacheDir: "node_modules/.vinxi/client",
228
- define: {
229
- "import.meta.env.START_APP": JSON.stringify(
230
- `${start.appRoot}/app${entryExtension}`
231
- ),
232
- "import.meta.env.START_ISLANDS": JSON.stringify(start.experimental.islands),
233
- "import.meta.env.SSR": JSON.stringify(false),
234
- "import.meta.env.START_SSR": JSON.stringify(start.ssr),
235
- "import.meta.env.START_DEV_OVERLAY": JSON.stringify(start.devOverlay),
236
- "import.meta.env.SERVER_BASE_URL": JSON.stringify(server?.baseURL ?? ""),
237
- ...userConfig.define
238
- }
239
- })
240
- ];
241
- }
242
- },
243
- {
244
- name: "server-fns",
245
- type: "http",
246
- base: "/_server",
247
- handler: normalize(
248
- fileURLToPath(new URL("../dist/runtime/server-handler.js", import.meta.url))
249
- ),
250
- middleware: start.middleware,
251
- target: "server",
252
- routes: solidStartServerFsRouter({ dir: routeDir, extensions, dataOnly: !start.ssr }),
253
- plugins: async () => {
254
- const userConfig =
255
- typeof vite === "function" ? await vite({ router: "server-function" }) : { ...vite };
256
- const plugins = userConfig.plugins || [];
257
- delete userConfig.plugins;
258
- return [
259
- config("user", {
260
- ...userConfig,
261
- optimizeDeps: {
262
- ...(userConfig.optimizeDeps || {}),
263
- include: [
264
- ...(userConfig.optimizeDeps?.include || []),
265
- "@solidjs/start > source-map-js",
266
- "@solidjs/start > error-stack-parser"
267
- ]
268
- },
269
- cacheDir: "node_modules/.vinxi/server-fns"
270
- }),
271
- ...plugins,
272
- SolidStartServerFnsPlugin.server,
273
- start.experimental.islands ? serverComponents.server() : null,
274
- solid({ ...start.solid, ssr: true, extensions: extensions.map(ext => `.${ext}`) }),
275
- config("app-server", {
276
- resolve: {
277
- alias: {
278
- "#start/app": join(process.cwd(), start.appRoot, `app${entryExtension}`),
279
- "~": join(process.cwd(), start.appRoot),
280
- ...(!start.ssr
281
- ? {
282
- "@solidjs/start/server": "@solidjs/start/server/spa"
283
- }
284
- : {}),
285
- ...userConfig.resolve?.alias
286
- }
287
- },
288
- define: {
289
- "import.meta.env.START_APP": JSON.stringify(
290
- `${start.appRoot}/app${entryExtension}`
291
- ),
292
- "import.meta.env.START_ISLANDS": JSON.stringify(start.experimental.islands),
293
- "import.meta.env.SSR": JSON.stringify(true),
294
- "import.meta.env.START_SSR": JSON.stringify(start.ssr),
295
- "import.meta.env.START_DEV_OVERLAY": JSON.stringify(start.devOverlay),
296
- ...userConfig.define
297
- }
298
- })
299
- ];
300
- }
301
- }
302
- ]
303
- });
304
- }
@@ -1,106 +0,0 @@
1
- import {
2
- decorateExportsPlugin,
3
- directives,
4
- shimExportsPlugin,
5
- wrapExportsPlugin
6
- } from "@vinxi/plugin-directives";
7
- import { client as clientComponents } from "@vinxi/server-components/client";
8
- import { SERVER_REFERENCES_MANIFEST } from "@vinxi/server-components/constants";
9
- import { buildServerComponents } from "@vinxi/server-components/server";
10
- import { fileURLToPath } from "node:url";
11
- import { chunkify } from "vinxi/lib/chunks";
12
- import { normalize } from "vinxi/lib/path";
13
-
14
- function client() {
15
- return clientComponents({
16
- server: "ssr",
17
- transpileDeps: [],
18
- manifest: SERVER_REFERENCES_MANIFEST
19
- });
20
- }
21
-
22
- function server() {
23
- const runtime = normalize(fileURLToPath(new URL("../dist/runtime/server-runtime.js", import.meta.url)));
24
- // export function serverComponents({
25
- // resolve = {
26
- // conditions: ["react-server"],
27
- // },
28
- // runtime = "@vinxi/react-server-dom-vite/runtime",
29
- // transpileDeps = ["react", "react-dom", "@vinxi/react-server-dom-vite"],
30
- // manifest = SERVER_REFERENCES_MANIFEST,
31
- // transforms = undefined,
32
- // } = {}) {
33
- const serverModules = new Set();
34
- const clientModules = new Set();
35
-
36
- function onReference(type, reference) {
37
- if (type === "server") {
38
- serverModules.add(reference);
39
- } else {
40
- clientModules.add(reference);
41
- }
42
- }
43
-
44
- return [
45
- directives({
46
- hash: chunkify,
47
- runtime,
48
- onReference: onReference,
49
- transforms: [
50
- shimExportsPlugin({
51
- runtime: {
52
- module: runtime,
53
- function: "createServerReference"
54
- },
55
- onModuleFound: mod => onReference("server", mod),
56
- hash: chunkify,
57
- apply: (code, id, options) => {
58
- return !options.ssr;
59
- },
60
- pragma: "use server"
61
- }),
62
- decorateExportsPlugin({
63
- runtime: {
64
- module: runtime,
65
- function: "createServerReference"
66
- },
67
- onModuleFound: mod => onReference("server", mod),
68
- hash: chunkify,
69
- apply: (code, id, options) => {
70
- return options.ssr;
71
- },
72
- pragma: "use server"
73
- }),
74
- wrapExportsPlugin({
75
- runtime: {
76
- module: runtime,
77
- function: "createClientReference"
78
- },
79
- onModuleFound: mod => onReference("client", mod),
80
- hash: chunkify,
81
- apply: (code, id, options) => {
82
- return options.ssr;
83
- },
84
- pragma: "use client"
85
- })
86
- ]
87
- }),
88
- buildServerComponents({
89
- resolve: {
90
- conditions: ["solid"]
91
- },
92
- transpileDeps: [],
93
- manifest: SERVER_REFERENCES_MANIFEST,
94
- modules: {
95
- server: serverModules,
96
- client: clientModules
97
- }
98
- })
99
- ];
100
- // }
101
- }
102
-
103
- export const serverComponents = {
104
- client,
105
- server
106
- };
@@ -1,7 +0,0 @@
1
- import "vinxi/client";
2
- /**
3
- *
4
- * Read more: https://docs.solidjs.com/solid-start/reference/client/start-client
5
- */
6
- export declare function StartClient(): null;
7
- export { mount } from "./mount";
@@ -1,10 +0,0 @@
1
- // @refresh skip
2
- import "vinxi/client";
3
- /**
4
- *
5
- * Read more: https://docs.solidjs.com/solid-start/reference/client/start-client
6
- */
7
- export function StartClient() {
8
- return null;
9
- }
10
- export { mount } from "./mount";
@@ -1,35 +0,0 @@
1
- // @refresh skip
2
- import { defineMiddleware, sendWebResponse } from "vinxi/http";
3
- import { getFetchEvent } from "../server/fetchEvent";
4
- function wrapRequestMiddleware(onRequest) {
5
- return async (h3Event) => {
6
- const fetchEvent = getFetchEvent(h3Event);
7
- const response = await onRequest(fetchEvent);
8
- if (response) {
9
- await sendWebResponse(h3Event, response);
10
- }
11
- };
12
- }
13
- function wrapResponseMiddleware(onBeforeResponse) {
14
- return async (h3Event, response) => {
15
- const fetchEvent = getFetchEvent(h3Event);
16
- const mwResponse = await onBeforeResponse(fetchEvent, response);
17
- if (mwResponse) {
18
- await sendWebResponse(h3Event, mwResponse);
19
- }
20
- };
21
- }
22
- export function createMiddleware({ onRequest, onBeforeResponse }) {
23
- return defineMiddleware({
24
- onRequest: typeof onRequest === "function"
25
- ? wrapRequestMiddleware(onRequest)
26
- : Array.isArray(onRequest)
27
- ? onRequest.map(wrapRequestMiddleware)
28
- : undefined,
29
- onBeforeResponse: typeof onBeforeResponse === "function"
30
- ? wrapResponseMiddleware(onBeforeResponse)
31
- : Array.isArray(onBeforeResponse)
32
- ? onBeforeResponse.map(wrapResponseMiddleware)
33
- : undefined
34
- });
35
- }
@@ -1 +0,0 @@
1
- export { FileRoutes } from "./FileRoutes";
@@ -1,2 +0,0 @@
1
- /* @refresh skip */
2
- export { FileRoutes } from "./FileRoutes";
@@ -1,6 +0,0 @@
1
- import { type Component } from "solid-js";
2
- export default function lazyRoute<T extends Record<string, any>>(component: any, clientManifest: any, serverManifest: any, exported?: string): Component<T> & {
3
- preload: () => Promise<{
4
- default: Component<T>;
5
- }>;
6
- };
@@ -1,53 +0,0 @@
1
- /// <reference types="vinxi/types/client" />
2
- import { createComponent, lazy, onCleanup } from "solid-js";
3
- import { appendStyles, cleanupStyles, preloadStyles, updateStyles } from "vinxi/css";
4
- import { renderAsset } from "../server/renderAsset";
5
- export default function lazyRoute(component, clientManifest, serverManifest, exported = "default") {
6
- return lazy(async () => {
7
- if (import.meta.env.DEV) {
8
- let manifest = import.meta.env.SSR ? serverManifest : clientManifest;
9
- // import() throws if a module doesn't exist, which includes any
10
- // modules loaded by the route itself, so it's important we catch here
11
- const mod = await manifest.inputs[component.src].import().catch(() => null);
12
- // fallback to an empty component as any errors will surface in the vite overlay
13
- if (!mod)
14
- return { default: () => [] };
15
- if (!mod[exported])
16
- console.error(`Module ${component.src} does not export ${exported}`);
17
- const Component = mod[exported];
18
- let assets = await clientManifest.inputs?.[component.src]?.assets();
19
- const styles = assets.filter((asset) => asset.tag === "style");
20
- if (typeof window !== "undefined" && import.meta.hot) {
21
- import.meta.hot.on("css-update", data => {
22
- updateStyles(styles, data);
23
- });
24
- }
25
- const Comp = props => {
26
- if (typeof window !== "undefined") {
27
- appendStyles(styles);
28
- }
29
- onCleanup(() => {
30
- if (typeof window !== "undefined") {
31
- // remove style tags added by vite when a CSS file is imported
32
- cleanupStyles(styles);
33
- }
34
- });
35
- return [...assets.map((asset) => renderAsset(asset)), createComponent(Component, props)];
36
- };
37
- return { default: Comp };
38
- }
39
- else {
40
- const mod = await component.import();
41
- const Component = mod[exported];
42
- let assets = await clientManifest.inputs?.[component.src].assets();
43
- const styles = assets.filter((asset) => asset.tag === "style" || asset.attrs.rel === "stylesheet");
44
- if (typeof window !== "undefined") {
45
- preloadStyles(styles);
46
- }
47
- const Comp = props => {
48
- return [...styles.map((asset) => renderAsset(asset)), createComponent(Component, props)];
49
- };
50
- return { default: Comp };
51
- }
52
- });
53
- }
@@ -1,2 +0,0 @@
1
- declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<unknown>>;
2
- export default _default;
@@ -1,3 +0,0 @@
1
- import { type Component } from "solid-js";
2
- export declare function createServerReference(fn: Function, id: string, name: string): Function;
3
- export declare function createClientReference(Component: Component<any>, id: string, name: string): Component<any>;
@@ -1,19 +0,0 @@
1
- import { type Component } from "solid-js";
2
- declare module "solid-js" {
3
- namespace JSX {
4
- interface IntrinsicElements {
5
- "solid-island": {
6
- "data-props": string;
7
- "data-id": string;
8
- "data-when": "idle" | "load";
9
- children: JSX.Element;
10
- };
11
- "solid-children": {
12
- children: JSX.Element;
13
- };
14
- }
15
- }
16
- }
17
- export declare function createIslandReference<T extends Component<any>>(Comp: T | (() => Promise<{
18
- default: T;
19
- }>), id: string, name: string): T;
@@ -1,62 +0,0 @@
1
- // @refresh skip
2
- import { lazy, sharedConfig } from "solid-js";
3
- import { Hydration, NoHydration, getRequestEvent } from "solid-js/web";
4
- // import { IslandManifest } from "./types";
5
- import { splitProps } from "./utils";
6
- export function createIslandReference(Comp, id, name) {
7
- let Component = Comp;
8
- if (!import.meta.env.START_ISLANDS) {
9
- // TODO: have some sane semantics for islands used in non-island mode
10
- return lazy(Comp);
11
- }
12
- function IslandComponent(props) {
13
- return (<Component {...props}>
14
- <NoHydration>{props.children}</NoHydration>
15
- </Component>);
16
- }
17
- return ((compProps) => {
18
- if (import.meta.env.SSR) {
19
- const context = getRequestEvent();
20
- const [, props] = splitProps(compProps, ["children"]);
21
- const [, spreadProps] = splitProps(compProps, []);
22
- let fpath;
23
- let styles = [];
24
- // if (import.meta.env.PROD) {
25
- // let x = context.env.manifest?.[path] as IslandManifest;
26
- // context.$islands.add(path);
27
- // if (x) {
28
- // fpath = x.script.href;
29
- // styles = x.assets.filter(v => v.type == "style").map(v => v.href);
30
- // }
31
- // } else {
32
- fpath = id + "#" + name;
33
- // }
34
- const serialize = (props) => {
35
- let offset = 0;
36
- let el = JSON.stringify(props, (key, value) => {
37
- if (value && value.t) {
38
- offset++;
39
- return undefined;
40
- }
41
- return value;
42
- });
43
- return {
44
- "data-props": el,
45
- "data-offset": offset
46
- };
47
- };
48
- // @ts-expect-error
49
- if (!sharedConfig.context?.noHydrate) {
50
- return <Component {...compProps}/>;
51
- }
52
- return (<Hydration>
53
- <solid-island data-id={fpath} data-when={props["client:idle"] ? "idle" : "load"} data-css={JSON.stringify(styles)} {...serialize(props)}>
54
- <IslandComponent {...spreadProps}/>
55
- </solid-island>
56
- </Hydration>);
57
- }
58
- else {
59
- return <Component {...compProps}/>;
60
- }
61
- });
62
- }
@@ -1 +0,0 @@
1
- export declare function splitProps<T>(props: T, ...keys: (keyof T)[]): [T, T];