@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.
@@ -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.tsx`,
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, "app.tsx"),
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.tsx`,
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, "app.tsx"),
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, "app.tsx"),
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 evt = cloneEvent(getRequestEvent());
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidjs/start",
3
- "version": "0.4.0-alpha.8",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "author": "Ryan Carniato",
6
6
  "publishConfig": {
@@ -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);