@solidjs/start 0.4.0-alpha.8 → 0.4.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.
- package/config/index.d.ts +14 -0
- package/config/index.js +27 -15
- package/config/server-fns-runtime.jsx +3 -1
- package/package.json +1 -1
- package/server/handler.tsx +2 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InlineConfig } from "vite";
|
|
2
|
+
|
|
3
|
+
type SolidStartInlineConfig = Omit<InlineConfig, "router"> & {
|
|
4
|
+
start?: {
|
|
5
|
+
ssr?: boolean | "async",
|
|
6
|
+
extensions?: string[],
|
|
7
|
+
server?: any,
|
|
8
|
+
appRoot?: string,
|
|
9
|
+
middleware?: string,
|
|
10
|
+
//islands?: boolean TODO: Get PROD bugs working probably missing release
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export declare function defineConfig(baseConfig: SolidStartInlineConfig)
|
package/config/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { serverFunctions } from "@vinxi/server-functions/plugin";
|
|
2
2
|
import { serverTransform } from "@vinxi/server-functions/server";
|
|
3
3
|
import defu from "defu";
|
|
4
|
+
import { existsSync } from "node:fs";
|
|
4
5
|
import { join } from "node:path";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
7
|
import { createApp, resolve } from "vinxi";
|
|
@@ -43,10 +44,15 @@ export function defineConfig(baseConfig = {}) {
|
|
|
43
44
|
appRoot: "./src",
|
|
44
45
|
ssr: true,
|
|
45
46
|
islands: false,
|
|
47
|
+
solid: {}
|
|
46
48
|
});
|
|
47
49
|
let server = start.server;
|
|
48
50
|
if (!start.ssr) {
|
|
49
|
-
server = { ...server, prerender: { routes: ["/"] }
|
|
51
|
+
server = { ...server, prerender: { routes: ["/"] } };
|
|
52
|
+
}
|
|
53
|
+
let entryExtension = ".tsx"
|
|
54
|
+
if (existsSync(join(process.cwd(), start.appRoot, "app.jsx"))) {
|
|
55
|
+
entryExtension = ".jsx"
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
return createApp({
|
|
@@ -67,7 +73,7 @@ export function defineConfig(baseConfig = {}) {
|
|
|
67
73
|
{
|
|
68
74
|
name: "ssr",
|
|
69
75
|
mode: "handler",
|
|
70
|
-
handler: `${start.appRoot}/entry-server
|
|
76
|
+
handler: `${start.appRoot}/entry-server${entryExtension}`,
|
|
71
77
|
middleware: start.middleware,
|
|
72
78
|
routes: solidStartServerFsRouter({ dir: `${start.appRoot}/routes`, extensions }),
|
|
73
79
|
extensions,
|
|
@@ -79,23 +85,25 @@ export function defineConfig(baseConfig = {}) {
|
|
|
79
85
|
runtime: normalize(fileURLToPath(new URL("./server-fns-runtime.jsx", import.meta.url)))
|
|
80
86
|
}),
|
|
81
87
|
start.islands ? serverComponents.server() : null,
|
|
82
|
-
solid({ ssr: true, extensions: extensions.map(ext => `.${ext}`) }),
|
|
88
|
+
solid({ ...start.solid, ssr: true, extensions: extensions.map(ext => `.${ext}`) }),
|
|
83
89
|
config("app-server", {
|
|
84
90
|
resolve: {
|
|
85
91
|
alias: {
|
|
86
|
-
"#start/app": join(process.cwd(), start.appRoot,
|
|
92
|
+
"#start/app": join(process.cwd(), start.appRoot, `app${entryExtension}`),
|
|
87
93
|
"~": join(process.cwd(), start.appRoot),
|
|
88
94
|
...(!start.ssr
|
|
89
95
|
? {
|
|
90
96
|
"@solidjs/start/server": "@solidjs/start/server/spa"
|
|
91
97
|
}
|
|
92
|
-
: {})
|
|
98
|
+
: {}),
|
|
99
|
+
...userConfig.resolve?.alias
|
|
93
100
|
}
|
|
94
101
|
},
|
|
95
102
|
define: {
|
|
96
103
|
"import.meta.env.START_ISLANDS": JSON.stringify(start.islands),
|
|
97
104
|
"import.meta.env.SSR": JSON.stringify(true),
|
|
98
|
-
"import.meta.env.START_SSR": JSON.stringify(start.ssr)
|
|
105
|
+
"import.meta.env.START_SSR": JSON.stringify(start.ssr),
|
|
106
|
+
...userConfig.define
|
|
99
107
|
}
|
|
100
108
|
})
|
|
101
109
|
]
|
|
@@ -103,7 +111,7 @@ export function defineConfig(baseConfig = {}) {
|
|
|
103
111
|
{
|
|
104
112
|
name: "client",
|
|
105
113
|
mode: "build",
|
|
106
|
-
handler: `${start.appRoot}/entry-client
|
|
114
|
+
handler: `${start.appRoot}/entry-client${entryExtension}`,
|
|
107
115
|
...(start.islands
|
|
108
116
|
? {}
|
|
109
117
|
: {
|
|
@@ -118,11 +126,11 @@ export function defineConfig(baseConfig = {}) {
|
|
|
118
126
|
runtime: normalize(fileURLToPath(new URL("./server-runtime.jsx", import.meta.url)))
|
|
119
127
|
}),
|
|
120
128
|
start.islands ? serverComponents.client() : null,
|
|
121
|
-
solid({ ssr: start.ssr, extensions: extensions.map(ext => `.${ext}`) }),
|
|
129
|
+
solid({ ...start.solid, ssr: start.ssr, extensions: extensions.map(ext => `.${ext}`) }),
|
|
122
130
|
config("app-client", {
|
|
123
131
|
resolve: {
|
|
124
132
|
alias: {
|
|
125
|
-
"#start/app": join(process.cwd(), start.appRoot,
|
|
133
|
+
"#start/app": join(process.cwd(), start.appRoot, `app${entryExtension}`),
|
|
126
134
|
"~": join(process.cwd(), start.appRoot),
|
|
127
135
|
...(start.islands
|
|
128
136
|
? {
|
|
@@ -133,13 +141,15 @@ export function defineConfig(baseConfig = {}) {
|
|
|
133
141
|
? {
|
|
134
142
|
"@solidjs/start/client": "@solidjs/start/client/spa"
|
|
135
143
|
}
|
|
136
|
-
: {})
|
|
144
|
+
: {}),
|
|
145
|
+
...userConfig.resolve?.alias
|
|
137
146
|
}
|
|
138
147
|
},
|
|
139
148
|
define: {
|
|
140
149
|
"import.meta.env.START_ISLANDS": JSON.stringify(start.islands),
|
|
141
150
|
"import.meta.env.SSR": JSON.stringify(false),
|
|
142
|
-
"import.meta.env.START_SSR": JSON.stringify(start.ssr)
|
|
151
|
+
"import.meta.env.START_SSR": JSON.stringify(start.ssr),
|
|
152
|
+
...userConfig.define
|
|
143
153
|
}
|
|
144
154
|
})
|
|
145
155
|
],
|
|
@@ -152,23 +162,25 @@ export function defineConfig(baseConfig = {}) {
|
|
|
152
162
|
plugins: () => [
|
|
153
163
|
config("user", userConfig),
|
|
154
164
|
...plugins,
|
|
155
|
-
solid({ ssr: true, extensions: extensions.map(ext => `.${ext}`) }),
|
|
165
|
+
solid({ ...start.solid, ssr: true, extensions: extensions.map(ext => `.${ext}`) }),
|
|
156
166
|
config("app-server", {
|
|
157
167
|
resolve: {
|
|
158
168
|
alias: {
|
|
159
|
-
"#start/app": join(process.cwd(), start.appRoot,
|
|
169
|
+
"#start/app": join(process.cwd(), start.appRoot, `app${entryExtension}`),
|
|
160
170
|
"~": join(process.cwd(), start.appRoot),
|
|
161
171
|
...(!start.ssr
|
|
162
172
|
? {
|
|
163
173
|
"@solidjs/start/server": "@solidjs/start/server/spa"
|
|
164
174
|
}
|
|
165
|
-
: {})
|
|
175
|
+
: {}),
|
|
176
|
+
...userConfig.resolve?.alias
|
|
166
177
|
}
|
|
167
178
|
},
|
|
168
179
|
define: {
|
|
169
180
|
"import.meta.env.START_ISLANDS": JSON.stringify(start.islands),
|
|
170
181
|
"import.meta.env.SSR": JSON.stringify(true),
|
|
171
|
-
"import.meta.env.START_SSR": JSON.stringify(start.ssr)
|
|
182
|
+
"import.meta.env.START_SSR": JSON.stringify(start.ssr),
|
|
183
|
+
...userConfig.define
|
|
172
184
|
}
|
|
173
185
|
})
|
|
174
186
|
],
|
|
@@ -10,7 +10,9 @@ export function createServerReference(fn, id, name) {
|
|
|
10
10
|
}
|
|
11
11
|
},
|
|
12
12
|
apply(target, thisArg, args) {
|
|
13
|
-
const
|
|
13
|
+
const ogEvt = getRequestEvent();
|
|
14
|
+
if (!ogEvt) throw new Error("Cannot call server function outside of a request");
|
|
15
|
+
const evt = cloneEvent(ogEvt);
|
|
14
16
|
evt.serverOnly = true;
|
|
15
17
|
return provideRequestEvent(evt, () => {
|
|
16
18
|
return fn.apply(thisArg, args);
|
package/package.json
CHANGED
package/server/handler.tsx
CHANGED
|
@@ -46,6 +46,7 @@ export function createHandler(
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
// render stream
|
|
49
|
+
const doAsync = import.meta.env.START_SSR === "async";
|
|
49
50
|
const context = await createPageEvent(event);
|
|
50
51
|
let cloned = { ...options };
|
|
51
52
|
if (cloned.onCompleteAll) {
|
|
@@ -66,6 +67,7 @@ export function createHandler(
|
|
|
66
67
|
if (context.response && context.response.headers.get("Location")) {
|
|
67
68
|
return sendRedirect(event, context.response.headers.get("Location"));
|
|
68
69
|
}
|
|
70
|
+
if (doAsync) return stream;
|
|
69
71
|
// fix cloudflare streaming
|
|
70
72
|
const { writable, readable } = new TransformStream();
|
|
71
73
|
stream.pipeTo(writable);
|