@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.
@@ -1,5 +1,5 @@
1
1
  import type { Component, JSX } from 'solid-js';
2
- import 'globals.css';
2
+ import './globals.css';
3
3
 
4
4
  export const generateMeta = () => ({
5
5
  'title': {
@@ -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 = Awaited<ReturnType<Exclude<typeof loader, null>>>['data'];
22
+ type LoaderData = LoaderDataFromFunction<typeof loader>;
23
23
 
24
24
  const Page = ({
25
25
  loaderData
@@ -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 ServerRouter(
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 ClientRouter(
57
+ return new ServerRouter(
58
58
  {
59
59
  dir: path.join(__dirname, 'app'),
60
60
  extensions: ['jsx', 'js', 'tsx', 'ts'],
@@ -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
- const groups: RoutePageEntry['groups'] = {};
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
- const layouts: RoutePageEntry['layouts'] = [];
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 = {};
@@ -8,7 +8,7 @@ type LoaderOptions = {
8
8
 
9
9
  export const defineLoader = <T>(loader: LoaderFunction<T>, options?: LoaderOptions) => {
10
10
  if (isServer) {
11
- return async (request?: Request) => {
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varlabs/create-solidstep",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Next Step SolidJS CLI for building web applications.",
5
5
  "type": "module",
6
6
  "author": "HamzaKV <hamzakv333@gmail.com>",