@varlabs/create-solidstep 0.1.4 → 0.1.6
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/generate/app/layout.tsx +1 -1
- package/generate/app/page.tsx +2 -2
- package/generate/app.config.ts +2 -2
- package/generate/server.ts +4 -4
- package/generate/utils/loader.ts +10 -1
- package/package.json +1 -1
package/generate/app/layout.tsx
CHANGED
package/generate/app/page.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineLoader } from '../utils/loader';
|
|
1
|
+
import { defineLoader, type LoaderDataFromFunction } from '../utils/loader';
|
|
2
2
|
import { NoHydration } from 'solid-js/web';
|
|
3
3
|
|
|
4
4
|
export const loader = defineLoader(async () => {
|
|
@@ -19,7 +19,7 @@ export const generateMeta = () => ({
|
|
|
19
19
|
},
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
type LoaderData =
|
|
22
|
+
type LoaderData = LoaderDataFromFunction<typeof loader>;
|
|
23
23
|
|
|
24
24
|
const Page = ({
|
|
25
25
|
loaderData
|
package/generate/app.config.ts
CHANGED
|
@@ -29,7 +29,7 @@ export default createApp({
|
|
|
29
29
|
plugins: () => [serverFunctions.client(), solid({ ssr: true })],
|
|
30
30
|
base: '/_build',
|
|
31
31
|
routes: (router, app) => {
|
|
32
|
-
return new
|
|
32
|
+
return new ClientRouter(
|
|
33
33
|
{
|
|
34
34
|
dir: path.join(__dirname, 'app'),
|
|
35
35
|
extensions: ['jsx', 'js', 'tsx', 'ts'],
|
|
@@ -54,7 +54,7 @@ export default createApp({
|
|
|
54
54
|
// },
|
|
55
55
|
middleware: './app/middleware.ts',
|
|
56
56
|
routes: (router, app) => {
|
|
57
|
-
return new
|
|
57
|
+
return new ServerRouter(
|
|
58
58
|
{
|
|
59
59
|
dir: path.join(__dirname, 'app'),
|
|
60
60
|
extensions: ['jsx', 'js', 'tsx', 'ts'],
|
package/generate/server.ts
CHANGED
|
@@ -125,7 +125,7 @@ const createRouteManifest = async () => {
|
|
|
125
125
|
const routePath = '/' + segments.filter(s => !(s.startsWith('('))).join('/');
|
|
126
126
|
const regex = /\?(?:pick=.*)*/g;
|
|
127
127
|
const src = fileRoute.$handler.src.replace(regex, '');
|
|
128
|
-
|
|
128
|
+
|
|
129
129
|
if (isPageFile(src)) {
|
|
130
130
|
const loadingPage = allLoadingPages.find(route => {
|
|
131
131
|
const path = '/' + route.path.split('/').slice(2).map(parseSegment).join('/');
|
|
@@ -136,7 +136,7 @@ const createRouteManifest = async () => {
|
|
|
136
136
|
const parentPath = route.parent ? '/' + route.parent.split('/').slice(2).map(parseSegment).join('/') : '';
|
|
137
137
|
return parentPath === routePath;
|
|
138
138
|
});
|
|
139
|
-
|
|
139
|
+
let groups: RoutePageEntry['groups'] = {};
|
|
140
140
|
if (matchedGroups && matchedGroups.length > 0) {
|
|
141
141
|
for (const group of matchedGroups) {
|
|
142
142
|
const groupName = group.path.split('/').filter(s => !(s.startsWith('('))).map(parseSegment).at(-1);
|
|
@@ -149,7 +149,7 @@ const createRouteManifest = async () => {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
let errorPage: FileRoute | undefined;
|
|
152
|
-
|
|
152
|
+
let layouts: RoutePageEntry['layouts'] = [];
|
|
153
153
|
for (let i = segments.length; i > (routePath === '/' ? 0 : -1); i--) {
|
|
154
154
|
const path = '/' + segments.slice(0, i).join('/');
|
|
155
155
|
if (!errorPage) {
|
|
@@ -212,7 +212,7 @@ const createRouteManifest = async () => {
|
|
|
212
212
|
};
|
|
213
213
|
|
|
214
214
|
const extractRouteParams = (route: string, url: string) => {
|
|
215
|
-
const routeSegments = route.split('/').filter(Boolean);
|
|
215
|
+
const routeSegments = route.split('/').filter(s => !(s.startsWith('('))).filter(Boolean);
|
|
216
216
|
const urlSegments = url.split('/').filter(Boolean);
|
|
217
217
|
|
|
218
218
|
const params = {};
|
package/generate/utils/loader.ts
CHANGED
|
@@ -8,7 +8,7 @@ type LoaderOptions = {
|
|
|
8
8
|
|
|
9
9
|
export const defineLoader = <T>(loader: LoaderFunction<T>, options?: LoaderOptions) => {
|
|
10
10
|
if (isServer) {
|
|
11
|
-
|
|
11
|
+
const fn = async (request?: Request) => {
|
|
12
12
|
try {
|
|
13
13
|
const loaderData = await loader(request);
|
|
14
14
|
return {
|
|
@@ -20,7 +20,16 @@ export const defineLoader = <T>(loader: LoaderFunction<T>, options?: LoaderOptio
|
|
|
20
20
|
throw error; // Re-throw to allow error handling upstream
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
loader: fn,
|
|
26
|
+
options: options || {},
|
|
27
|
+
};
|
|
23
28
|
}
|
|
24
29
|
|
|
25
30
|
return null; // Return null if not on the server
|
|
26
31
|
};
|
|
32
|
+
|
|
33
|
+
export type LoaderDataFromFunction<T> = T extends { loader: infer L extends (...args: any) => any }
|
|
34
|
+
? Awaited<ReturnType<T['loader']>> extends { data: infer D } ? D : never
|
|
35
|
+
: never;
|