@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.
- package/README.md +88 -8
- package/dist/client/StartClient.d.ts +0 -1
- package/dist/client/StartClient.jsx +2 -4
- package/dist/client/index.d.ts +2 -3
- package/dist/client/index.jsx +2 -4
- package/dist/client/mount.js +10 -2
- package/dist/client/spa/index.d.ts +1 -2
- package/dist/client/spa/index.jsx +1 -2
- package/dist/config/constants.d.ts +16 -0
- package/dist/config/constants.js +16 -0
- package/dist/config/dev-server.d.ts +2 -0
- package/dist/config/dev-server.js +108 -0
- package/dist/config/fs-router.d.ts +37 -0
- package/dist/config/fs-router.js +153 -0
- package/dist/config/fs-routes/fs-watcher.d.ts +3 -0
- package/dist/config/fs-routes/fs-watcher.js +49 -0
- package/dist/config/fs-routes/index.d.ts +7 -0
- package/dist/config/fs-routes/index.js +109 -0
- package/dist/config/fs-routes/router.d.ts +37 -0
- package/dist/config/fs-routes/router.js +136 -0
- package/dist/config/fs-routes/tree-shake.d.ts +2 -0
- package/dist/config/fs-routes/tree-shake.js +357 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.js +217 -0
- package/dist/config/lazy.d.ts +3 -0
- package/dist/config/lazy.js +82 -0
- package/dist/config/manifest.d.ts +3 -0
- package/dist/config/manifest.js +74 -0
- package/dist/config/utils.d.ts +4 -0
- package/dist/config/utils.js +6 -0
- package/dist/config/vite-utils.d.ts +16 -0
- package/dist/config/vite-utils.js +81 -0
- package/dist/http/index.d.ts +84 -0
- package/dist/http/index.js +131 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.jsx +5 -5
- package/dist/middleware/index.d.ts +6 -6
- package/dist/middleware/index.js +39 -0
- package/dist/{router/FileRoutes.js → router.jsx} +5 -6
- package/dist/server/StartServer.d.ts +3 -3
- package/dist/server/StartServer.jsx +9 -63
- package/dist/server/assets/index.d.ts +2 -0
- package/dist/server/assets/index.js +52 -0
- package/dist/server/assets/render.d.ts +19 -0
- package/dist/server/{renderAsset.jsx → assets/render.jsx} +1 -1
- package/dist/server/collect-styles.d.ts +3 -0
- package/dist/server/collect-styles.js +69 -0
- package/dist/server/fetchEvent.d.ts +4 -3
- package/dist/server/fetchEvent.js +12 -74
- package/dist/server/fetchEvent.spec.js +18 -197
- package/dist/server/handler.d.ts +6 -12
- package/dist/server/handler.js +180 -97
- package/dist/server/index.d.ts +8 -6
- package/dist/server/index.jsx +14 -6
- package/dist/server/manifest/client-manifest.d.ts +9 -0
- package/dist/server/manifest/client-manifest.js +6 -0
- package/dist/server/manifest/dev-client-manifest.d.ts +4 -0
- package/dist/server/manifest/dev-client-manifest.js +24 -0
- package/dist/server/manifest/dev-ssr-manifest.d.ts +5 -0
- package/dist/server/manifest/dev-ssr-manifest.js +23 -0
- package/dist/server/manifest/prod-client-manifest.d.ts +5 -0
- package/dist/server/manifest/prod-client-manifest.js +26 -0
- package/dist/server/manifest/prod-ssr-manifest.d.ts +6 -0
- package/dist/server/manifest/prod-ssr-manifest.js +90 -0
- package/dist/server/manifest/ssr-manifest.d.ts +4 -0
- package/dist/server/manifest/ssr-manifest.js +6 -0
- package/dist/{router → server}/routes.d.ts +5 -10
- package/dist/{router → server}/routes.js +35 -36
- package/dist/{runtime → server}/server-fns-runtime.d.ts +1 -1
- package/dist/{runtime → server}/server-fns-runtime.js +7 -6
- package/dist/server/server-functions-handler.d.ts +2 -0
- package/dist/{runtime/server-handler.js → server/server-functions-handler.js} +65 -100
- package/dist/server/server-runtime.d.ts +3 -0
- package/dist/{runtime → server}/server-runtime.js +9 -16
- package/dist/server/spa/StartServer.d.ts +1 -1
- package/dist/server/spa/StartServer.jsx +7 -9
- package/dist/server/spa/handler.d.ts +3 -3
- package/dist/server/spa/handler.js +9 -11
- package/dist/server/spa/index.d.ts +4 -3
- package/dist/server/spa/index.jsx +4 -3
- package/dist/server/types.d.ts +7 -9
- package/dist/server/util.d.ts +2 -0
- package/dist/server/util.js +8 -0
- package/dist/shared/ErrorBoundary.jsx +2 -2
- package/dist/shared/HttpHeader.jsx +4 -2
- package/dist/shared/{HttpStatusCode.jsx → HttpStatusCode.js} +3 -1
- package/dist/shared/dev-overlay/DevOverlayDialog.d.ts +2 -2
- package/dist/shared/dev-overlay/DevOverlayDialog.jsx +75 -66
- package/dist/shared/dev-overlay/createStackFrame.js +3 -3
- package/dist/shared/dev-overlay/index.jsx +5 -8
- package/dist/shared/lazy.d.ts +3 -0
- package/dist/shared/lazy.js +40 -0
- package/dist/shared/serverFunction.d.ts +1 -1
- package/package.json +45 -67
- package/scripts/build.js +15 -0
- package/scripts/validate-imports.js +316 -0
- package/src/client/StartClient.tsx +34 -0
- package/src/client/index.tsx +2 -0
- package/src/client/mount.ts +114 -0
- package/src/client/spa/index.tsx +9 -0
- package/src/config/constants.ts +19 -0
- package/src/config/dev-server.ts +149 -0
- package/src/config/fs-router.ts +177 -0
- package/src/config/fs-routes/fs-watcher.ts +81 -0
- package/src/config/fs-routes/index.ts +138 -0
- package/src/config/fs-routes/router.ts +169 -0
- package/src/config/fs-routes/tree-shake.ts +392 -0
- package/src/config/index.ts +236 -0
- package/src/config/lazy.ts +100 -0
- package/src/config/manifest.ts +84 -0
- package/src/config/utils.ts +5 -0
- package/src/config/vite-utils.ts +113 -0
- package/src/env.d.ts +35 -0
- package/src/http/index.ts +253 -0
- package/src/index.tsx +19 -0
- package/src/internal.d.ts +14 -0
- package/src/middleware/index.ts +82 -0
- package/src/router.tsx +36 -0
- package/src/server/StartServer.tsx +62 -0
- package/src/server/assets/index.ts +70 -0
- package/src/server/assets/render.tsx +42 -0
- package/src/server/collect-styles.ts +94 -0
- package/src/server/fetchEvent.spec.ts +89 -0
- package/src/server/fetchEvent.ts +36 -0
- package/src/server/handler.ts +250 -0
- package/src/server/index.tsx +16 -0
- package/src/server/manifest/client-manifest.ts +8 -0
- package/src/server/manifest/dev-client-manifest.ts +19 -0
- package/src/server/manifest/dev-ssr-manifest.ts +21 -0
- package/src/server/manifest/prod-client-manifest.ts +18 -0
- package/src/server/manifest/prod-ssr-manifest.ts +125 -0
- package/src/server/manifest/ssr-manifest.ts +8 -0
- package/src/server/routes.ts +138 -0
- package/src/server/server-fns-runtime.ts +31 -0
- package/src/server/server-functions-handler.ts +364 -0
- package/src/server/server-runtime.ts +240 -0
- package/src/server/spa/StartServer.tsx +40 -0
- package/src/server/spa/handler.ts +29 -0
- package/src/server/spa/index.tsx +5 -0
- package/src/server/types.ts +82 -0
- package/src/server/util.ts +12 -0
- package/src/shared/ErrorBoundary.tsx +52 -0
- package/src/shared/GET.ts +8 -0
- package/src/shared/HttpHeader.tsx +42 -0
- package/src/shared/HttpStatusCode.ts +27 -0
- package/src/shared/clientOnly.ts +44 -0
- package/src/shared/dev-overlay/CodeView.tsx +95 -0
- package/src/shared/dev-overlay/DevOverlayDialog.tsx +316 -0
- package/src/shared/dev-overlay/createStackFrame.ts +77 -0
- package/src/shared/dev-overlay/download.ts +6 -0
- package/src/shared/dev-overlay/env.d.ts +4 -0
- package/src/shared/dev-overlay/get-source-map.ts +35 -0
- package/src/shared/dev-overlay/icons.tsx +288 -0
- package/src/shared/dev-overlay/index.tsx +63 -0
- package/src/shared/dev-overlay/styles.css +292 -0
- package/src/shared/lazy.ts +51 -0
- package/src/shared/serverFunction.ts +10 -0
- package/src/virtual.d.ts +27 -0
- package/tsconfig.json +23 -0
- package/vitest.config.ts +9 -0
- package/config/fs-router.js +0 -142
- package/config/index.d.ts +0 -40
- package/config/index.js +0 -304
- package/config/server-components.js +0 -106
- package/dist/client/islands.d.ts +0 -7
- package/dist/client/islands.jsx +0 -10
- package/dist/middleware/index.jsx +0 -35
- package/dist/router/index.d.ts +0 -1
- package/dist/router/index.jsx +0 -2
- package/dist/router/lazyRoute.d.ts +0 -6
- package/dist/router/lazyRoute.js +0 -53
- package/dist/runtime/server-handler.d.ts +0 -2
- package/dist/runtime/server-runtime.d.ts +0 -3
- package/dist/server/islands/index.d.ts +0 -19
- package/dist/server/islands/index.jsx +0 -62
- package/dist/server/islands/utils.d.ts +0 -1
- package/dist/server/islands/utils.jsx +0 -85
- package/dist/server/pageEvent.d.ts +0 -2
- package/dist/server/pageEvent.js +0 -56
- package/dist/server/renderAsset.d.ts +0 -2
- package/env.d.ts +0 -26
- /package/dist/{router/FileRoutes.d.ts → router.d.ts} +0 -0
- /package/dist/shared/{clientOnly.jsx → clientOnly.js} +0 -0
- /package/dist/shared/{serverFunction.jsx → serverFunction.js} +0 -0
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
// @refresh skip
|
|
2
|
-
import ErrorStackParser from
|
|
3
|
-
import * as htmlToImage from
|
|
4
|
-
import { ErrorBoundary, For, Show, Suspense, createMemo, createSignal } from
|
|
5
|
-
import { Portal } from
|
|
6
|
-
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
2
|
+
import ErrorStackParser from "error-stack-parser";
|
|
3
|
+
import * as htmlToImage from "html-to-image";
|
|
4
|
+
import { ErrorBoundary, For, Show, Suspense, createMemo, createSignal } from "solid-js";
|
|
5
|
+
import { Portal } from "solid-js/web";
|
|
6
|
+
// @ts-ignore - terracotta module resolution issue with NodeNext
|
|
7
|
+
import { Dialog, DialogOverlay, DialogPanel, Select, SelectOption } from "terracotta";
|
|
8
|
+
import info from "../../../package.json" with { type: "json" };
|
|
9
|
+
import { CodeView } from "./CodeView.jsx";
|
|
10
|
+
import { createStackFrame } from "./createStackFrame.js";
|
|
11
|
+
import download from "./download.js";
|
|
12
|
+
import { ArrowLeftIcon, ArrowRightIcon, CameraIcon, DiscordIcon, GithubIcon, RefreshIcon, SolidStartIcon, ViewCompiledIcon, ViewOriginalIcon } from "./icons.jsx";
|
|
13
|
+
import "./styles.css";
|
|
13
14
|
export function classNames(...classes) {
|
|
14
|
-
return classes.filter(Boolean).join(
|
|
15
|
+
return classes.filter(Boolean).join(" ");
|
|
15
16
|
}
|
|
16
17
|
function ErrorInfo(props) {
|
|
17
18
|
const error = createMemo(() => {
|
|
@@ -31,8 +32,8 @@ function ErrorInfo(props) {
|
|
|
31
32
|
}
|
|
32
33
|
function getFileName(source) {
|
|
33
34
|
try {
|
|
34
|
-
const path = source.startsWith(
|
|
35
|
-
const paths = path.pathname.split(
|
|
35
|
+
const path = source.startsWith("/") ? new URL(source, "file://") : new URL(source);
|
|
36
|
+
const paths = path.pathname.split("/");
|
|
36
37
|
return paths[paths.length - 1];
|
|
37
38
|
}
|
|
38
39
|
catch (error) {
|
|
@@ -40,71 +41,77 @@ function getFileName(source) {
|
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
function getFilePath(source) {
|
|
43
|
-
const line = source.line ? `:${source.line}` :
|
|
44
|
-
const column = source.column ? `:${source.column}` :
|
|
44
|
+
const line = source.line ? `:${source.line}` : "";
|
|
45
|
+
const column = source.column ? `:${source.column}` : "";
|
|
45
46
|
return `${getFileName(source.source)}${line}${column}`;
|
|
46
47
|
}
|
|
47
48
|
function CodeFallback() {
|
|
48
|
-
return <div class="dev-overlay-stack-frames-code-fallback">
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
return (<div class="dev-overlay-stack-frames-code-fallback">
|
|
50
|
+
<span>Source not available.</span>
|
|
51
|
+
</div>);
|
|
51
52
|
}
|
|
52
53
|
function StackFramesContent(props) {
|
|
53
54
|
const stackframes = ErrorStackParser.parse(props.error);
|
|
54
55
|
const [selectedFrame, setSelectedFrame] = createSignal(stackframes[0]);
|
|
55
56
|
return (<div class="dev-overlay-stack-frames-content">
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
<div class="dev-overlay-stack-frames-code">
|
|
58
|
+
<ErrorBoundary fallback={null}>
|
|
59
|
+
{(() => {
|
|
59
60
|
const data = createStackFrame(selectedFrame(), () => props.isCompiled);
|
|
60
61
|
return (<Suspense fallback={<CodeFallback />}>
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
<Show when={data()} keyed fallback={<CodeFallback />}>
|
|
63
|
+
{source => (<>
|
|
64
|
+
<span class="dev-overlay-stack-frames-code-source">{source.source}</span>
|
|
65
|
+
<div class="dev-overlay-stack-frames-code-container">
|
|
66
|
+
<CodeView fileName={source.source} line={source.line} content={source.content}/>
|
|
67
|
+
</div>
|
|
68
|
+
</>)}
|
|
69
|
+
</Show>
|
|
70
|
+
</Suspense>);
|
|
70
71
|
})()}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
</ErrorBoundary>
|
|
73
|
+
</div>
|
|
74
|
+
<Select class="dev-overlay-stack-frames" value={selectedFrame()} onChange={setSelectedFrame}>
|
|
75
|
+
<For each={stackframes}>
|
|
76
|
+
{current => (<ErrorBoundary fallback={<div class="dev-overlay-stack-frame">
|
|
77
|
+
<span class="dev-overlay-stack-frame-function">
|
|
78
|
+
{current.functionName ?? "<anonymous>"}
|
|
79
|
+
</span>
|
|
80
|
+
<span class="dev-overlay-stack-frame-file">
|
|
81
|
+
{getFilePath({
|
|
78
82
|
source: current.getFileName(),
|
|
79
|
-
content:
|
|
83
|
+
content: "",
|
|
80
84
|
line: current.getLineNumber(),
|
|
81
85
|
column: current.getColumnNumber(),
|
|
82
|
-
name: current.getFunctionName()
|
|
83
|
-
})}
|
|
84
|
-
|
|
86
|
+
name: current.getFunctionName()
|
|
87
|
+
})}
|
|
88
|
+
</span>
|
|
89
|
+
</div>}>
|
|
85
90
|
{(() => {
|
|
86
91
|
const data = createStackFrame(current, () => props.isCompiled);
|
|
87
92
|
return (<Suspense>
|
|
88
93
|
<Show when={data()} keyed>
|
|
89
|
-
{
|
|
90
|
-
<span class="dev-overlay-stack-frame-function">
|
|
94
|
+
{source => (<SelectOption class="dev-overlay-stack-frame" value={current}>
|
|
95
|
+
<span class="dev-overlay-stack-frame-function">
|
|
96
|
+
{source.name ?? "<anonymous>"}
|
|
97
|
+
</span>
|
|
91
98
|
<span class="dev-overlay-stack-frame-file">{getFilePath(source)}</span>
|
|
92
99
|
</SelectOption>)}
|
|
93
100
|
</Show>
|
|
94
101
|
</Suspense>);
|
|
95
102
|
})()}
|
|
96
103
|
</ErrorBoundary>)}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
</For>
|
|
105
|
+
</Select>
|
|
106
|
+
</div>);
|
|
100
107
|
}
|
|
101
108
|
function StackFrames(props) {
|
|
102
109
|
return (<Show when={props.error instanceof Error && props.error} keyed>
|
|
103
|
-
{
|
|
110
|
+
{current => <StackFramesContent error={current} isCompiled={props.isCompiled}/>}
|
|
104
111
|
</Show>);
|
|
105
112
|
}
|
|
106
|
-
const ISSUE_THREAD =
|
|
107
|
-
const DISCORD_INVITE =
|
|
113
|
+
const ISSUE_THREAD = "https://github.com/solidjs/solid-start/issues/new";
|
|
114
|
+
const DISCORD_INVITE = "https://discord.com/invite/solidjs";
|
|
108
115
|
export default function DevOverlayDialog(props) {
|
|
109
116
|
const [currentPage, setCurrentPage] = createSignal(1);
|
|
110
117
|
const [isCompiled, setIsCompiled] = createSignal(false);
|
|
@@ -113,7 +120,7 @@ export default function DevOverlayDialog(props) {
|
|
|
113
120
|
return Math.min(currentPage(), length());
|
|
114
121
|
});
|
|
115
122
|
function goPrev() {
|
|
116
|
-
setCurrentPage(
|
|
123
|
+
setCurrentPage(c => {
|
|
117
124
|
if (c > 1) {
|
|
118
125
|
return c - 1;
|
|
119
126
|
}
|
|
@@ -121,7 +128,7 @@ export default function DevOverlayDialog(props) {
|
|
|
121
128
|
});
|
|
122
129
|
}
|
|
123
130
|
function goNext() {
|
|
124
|
-
setCurrentPage(
|
|
131
|
+
setCurrentPage(c => {
|
|
125
132
|
if (c < length()) {
|
|
126
133
|
return c + 1;
|
|
127
134
|
}
|
|
@@ -129,31 +136,33 @@ export default function DevOverlayDialog(props) {
|
|
|
129
136
|
});
|
|
130
137
|
}
|
|
131
138
|
function toggleIsCompiled() {
|
|
132
|
-
setIsCompiled(
|
|
139
|
+
setIsCompiled(c => !c);
|
|
133
140
|
}
|
|
134
141
|
const [panel, setPanel] = createSignal();
|
|
135
142
|
function downloadScreenshot() {
|
|
136
143
|
const current = panel();
|
|
137
144
|
if (current) {
|
|
138
|
-
htmlToImage
|
|
145
|
+
htmlToImage
|
|
146
|
+
.toPng(current, {
|
|
139
147
|
style: {
|
|
140
|
-
transform:
|
|
141
|
-
}
|
|
142
|
-
})
|
|
143
|
-
|
|
148
|
+
transform: "scale(0.75)"
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
.then(url => {
|
|
152
|
+
download(url, "start-screenshot.png");
|
|
144
153
|
});
|
|
145
154
|
}
|
|
146
155
|
}
|
|
147
156
|
function redirectToGithub() {
|
|
148
157
|
const url = new URL(ISSUE_THREAD);
|
|
149
|
-
url.searchParams.append(
|
|
150
|
-
url.searchParams.append(
|
|
151
|
-
url.searchParams.append(
|
|
152
|
-
url.searchParams.append(
|
|
153
|
-
window.open(url,
|
|
158
|
+
url.searchParams.append("labels", "bug");
|
|
159
|
+
url.searchParams.append("labels", "needs+triage");
|
|
160
|
+
url.searchParams.append("template", "bug.yml");
|
|
161
|
+
url.searchParams.append("title", `[Bug?]:` + props.errors[truncated() - 1].toString());
|
|
162
|
+
window.open(url, "_blank").focus();
|
|
154
163
|
}
|
|
155
164
|
function redirectToDiscord() {
|
|
156
|
-
window.open(DISCORD_INVITE,
|
|
165
|
+
window.open(DISCORD_INVITE, "_blank").focus();
|
|
157
166
|
}
|
|
158
167
|
return (<Portal>
|
|
159
168
|
<Dialog class="dev-overlay" isOpen>
|
|
@@ -194,7 +203,7 @@ export default function DevOverlayDialog(props) {
|
|
|
194
203
|
<CameraIcon title="Capture Error Overlay"/>
|
|
195
204
|
</button>
|
|
196
205
|
<button class="dev-overlay-button" onClick={toggleIsCompiled} type="button">
|
|
197
|
-
<Show when={isCompiled()} fallback={
|
|
206
|
+
<Show when={isCompiled()} fallback={<ViewOriginalIcon title="View Original Source"/>}>
|
|
198
207
|
<ViewCompiledIcon title="View Compiled Source"/>
|
|
199
208
|
</Show>
|
|
200
209
|
</button>
|
|
@@ -204,7 +213,7 @@ export default function DevOverlayDialog(props) {
|
|
|
204
213
|
</div>
|
|
205
214
|
</div>
|
|
206
215
|
<Show when={props.errors[truncated() - 1]} keyed>
|
|
207
|
-
{
|
|
216
|
+
{current => (<div class="dev-overlay-content">
|
|
208
217
|
<ErrorInfo error={current}/>
|
|
209
218
|
<StackFrames error={current} isCompiled={isCompiled()}/>
|
|
210
219
|
</div>)}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createMemo, createResource } from "solid-js";
|
|
2
|
-
import getSourceMap from "./get-source-map";
|
|
2
|
+
import getSourceMap from "./get-source-map.js";
|
|
3
3
|
function getActualFileSource(path) {
|
|
4
|
-
if (path.startsWith(
|
|
5
|
-
return
|
|
4
|
+
if (path.startsWith("file://")) {
|
|
5
|
+
return "/_build/@fs" + path.substring("file://".length);
|
|
6
6
|
}
|
|
7
7
|
return path;
|
|
8
8
|
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
// @refresh skip
|
|
2
2
|
import { ErrorBoundary, Show, createEffect, createSignal, onCleanup, resetErrorBoundaries } from "solid-js";
|
|
3
|
-
import { HttpStatusCode } from "../HttpStatusCode";
|
|
4
|
-
import clientOnly from "../clientOnly";
|
|
5
|
-
const DevOverlayDialog =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return <></>;
|
|
9
|
-
}
|
|
10
|
-
: /* #__PURE__ */ clientOnly(() => import("./DevOverlayDialog"), { lazy: true });
|
|
3
|
+
import { HttpStatusCode } from "../HttpStatusCode.js";
|
|
4
|
+
import clientOnly from "../clientOnly.js";
|
|
5
|
+
const DevOverlayDialog = import.meta.env.PROD
|
|
6
|
+
? () => <></>
|
|
7
|
+
: clientOnly(() => import("./DevOverlayDialog"), { lazy: true });
|
|
11
8
|
export function DevOverlay(props) {
|
|
12
9
|
const [errors, setErrors] = createSignal([]);
|
|
13
10
|
function resetError() {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { lazy as solidLazy } from "solid-js";
|
|
2
|
+
import { getRequestEvent, isServer } from "solid-js/web";
|
|
3
|
+
import { getManifest } from "solid-start:get-manifest";
|
|
4
|
+
import { useAssets } from "../server/assets/index.js";
|
|
5
|
+
const assetsById = {};
|
|
6
|
+
const getAssets = async (id) => {
|
|
7
|
+
if (assetsById[id])
|
|
8
|
+
return assetsById[id];
|
|
9
|
+
const manifest = getManifest(import.meta.env.SSR && import.meta.env.DEV ? "ssr" : "client");
|
|
10
|
+
const assets = await manifest.getAssets(id);
|
|
11
|
+
if (import.meta.env.PROD)
|
|
12
|
+
assetsById[id] = assets;
|
|
13
|
+
return assets;
|
|
14
|
+
};
|
|
15
|
+
const withAssets = function (fn) {
|
|
16
|
+
const wrapper = async () => {
|
|
17
|
+
const mod = await fn();
|
|
18
|
+
// This id$$ export is generated by the lazy vite plugin
|
|
19
|
+
const id = mod.id$$;
|
|
20
|
+
if (!id)
|
|
21
|
+
return mod;
|
|
22
|
+
if (!mod.default) {
|
|
23
|
+
console.error(`Module ${id} does not export default`);
|
|
24
|
+
return { default: () => [] };
|
|
25
|
+
}
|
|
26
|
+
const assets = await getAssets(id);
|
|
27
|
+
if (!assets.length)
|
|
28
|
+
return mod;
|
|
29
|
+
return {
|
|
30
|
+
default: (props) => {
|
|
31
|
+
const { nonce } = getRequestEvent();
|
|
32
|
+
useAssets(assets, nonce);
|
|
33
|
+
return mod.default(props);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
return wrapper;
|
|
38
|
+
};
|
|
39
|
+
const lazy = !isServer ? solidLazy : (fn) => solidLazy(withAssets(fn));
|
|
40
|
+
export default lazy;
|
package/package.json
CHANGED
|
@@ -1,88 +1,66 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidjs/start",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-alpha.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"author": "Ryan Carniato",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"homepage": "https://start.solidjs.com/",
|
|
8
|
-
"bugs": "https://github.com/solidjs/solid-start/issues",
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "https://github.com/solidjs/solid-start.git",
|
|
12
|
-
"directory": "packages/start"
|
|
13
|
-
},
|
|
14
|
-
"publishConfig": {
|
|
15
|
-
"access": "public"
|
|
16
|
-
},
|
|
17
|
-
"files": [
|
|
18
|
-
"config",
|
|
19
|
-
"dist",
|
|
20
|
-
"env.d.ts"
|
|
21
|
-
],
|
|
22
|
-
"types": "./dist/index.d.ts",
|
|
23
5
|
"exports": {
|
|
24
6
|
".": "./dist/index.jsx",
|
|
25
|
-
"./config": "./config/index.js",
|
|
26
|
-
"./middleware": "./dist/middleware/index.jsx",
|
|
27
|
-
"./router": "./dist/router/index.jsx",
|
|
7
|
+
"./config": "./dist/config/index.js",
|
|
28
8
|
"./server": "./dist/server/index.jsx",
|
|
29
|
-
"./server/spa": "./dist/server/spa/index.jsx",
|
|
30
9
|
"./client": "./dist/client/index.jsx",
|
|
31
|
-
"./
|
|
10
|
+
"./router": "./dist/router.jsx",
|
|
11
|
+
"./server/spa": "./dist/server/spa/index.jsx",
|
|
32
12
|
"./client/spa": "./dist/client/spa/index.jsx",
|
|
33
|
-
"./
|
|
34
|
-
|
|
35
|
-
"import": null
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
"typesVersions": {
|
|
39
|
-
"*": {
|
|
40
|
-
".": [
|
|
41
|
-
"./dist/index.d.ts"
|
|
42
|
-
],
|
|
43
|
-
"middleware": [
|
|
44
|
-
"./dist/middleware/index.d.ts"
|
|
45
|
-
],
|
|
46
|
-
"router": [
|
|
47
|
-
"./dist/router/index.d.ts"
|
|
48
|
-
],
|
|
49
|
-
"server": [
|
|
50
|
-
"./dist/server/index.d.ts"
|
|
51
|
-
],
|
|
52
|
-
"client": [
|
|
53
|
-
"./dist/client/index.d.ts"
|
|
54
|
-
]
|
|
55
|
-
}
|
|
13
|
+
"./middleware": "./dist/middleware/index.js",
|
|
14
|
+
"./http": "./dist/http/index.js"
|
|
56
15
|
},
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"vinxi": "^0.5.7",
|
|
60
|
-
"vitest": "3.0.5"
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
61
18
|
},
|
|
62
19
|
"dependencies": {
|
|
63
|
-
"@
|
|
64
|
-
"@
|
|
65
|
-
"@
|
|
20
|
+
"@babel/core": "^7.28.3",
|
|
21
|
+
"@babel/traverse": "^7.28.3",
|
|
22
|
+
"@babel/types": "^7.28.5",
|
|
23
|
+
"@solidjs/meta": "^0.29.4",
|
|
24
|
+
"@tanstack/server-functions-plugin": "1.134.5",
|
|
25
|
+
"@types/babel__traverse": "^7.28.0",
|
|
26
|
+
"@types/micromatch": "^4.0.9",
|
|
66
27
|
"cookie-es": "^2.0.0",
|
|
67
|
-
"defu": "^6.1.
|
|
28
|
+
"defu": "^6.1.4",
|
|
68
29
|
"error-stack-parser": "^2.1.4",
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
30
|
+
"es-module-lexer": "^1.7.0",
|
|
31
|
+
"esbuild": "^0.25.3",
|
|
32
|
+
"fast-glob": "^3.3.3",
|
|
33
|
+
"h3": "npm:h3@2.0.1-rc.4",
|
|
34
|
+
"html-to-image": "^1.11.13",
|
|
35
|
+
"micromatch": "^4.0.8",
|
|
36
|
+
"path-to-regexp": "^8.2.0",
|
|
37
|
+
"pathe": "^2.0.3",
|
|
38
|
+
"radix3": "^1.1.2",
|
|
39
|
+
"seroval": "^1.3.2",
|
|
40
|
+
"seroval-plugins": "^1.2.1",
|
|
73
41
|
"shiki": "^1.26.1",
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
42
|
+
"solid-js": "^1.9.9",
|
|
43
|
+
"source-map-js": "^1.2.1",
|
|
44
|
+
"srvx": "^0.9.1",
|
|
45
|
+
"terracotta": "^1.0.6",
|
|
46
|
+
"vite-plugin-solid": "^2.11.9"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=22"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@types/babel__core": "^7.20.5",
|
|
53
|
+
"vite": "^7.1.10",
|
|
54
|
+
"vitest": "^4.0.10"
|
|
78
55
|
},
|
|
79
56
|
"peerDependencies": {
|
|
80
|
-
"
|
|
57
|
+
"vite": "^7"
|
|
81
58
|
},
|
|
82
59
|
"scripts": {
|
|
83
|
-
"
|
|
84
|
-
"
|
|
60
|
+
"build": "pnpm validate-imports && tsc && node scripts/build.js",
|
|
61
|
+
"dev": "tsc --watch",
|
|
85
62
|
"test": "vitest",
|
|
86
|
-
"test:ci": "vitest run"
|
|
63
|
+
"test:ci": "vitest run",
|
|
64
|
+
"validate-imports": "node scripts/validate-imports.js"
|
|
87
65
|
}
|
|
88
66
|
}
|
package/scripts/build.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import glob from "fast-glob";
|
|
4
|
+
|
|
5
|
+
const files = await glob("**/*.{js,css}", { cwd: `${process.cwd()}/src` });
|
|
6
|
+
|
|
7
|
+
await Promise.all(
|
|
8
|
+
files.map(file =>
|
|
9
|
+
fs.cp(
|
|
10
|
+
path.join(import.meta.dirname, "../src", file),
|
|
11
|
+
path.join(import.meta.dirname, "../dist", file),
|
|
12
|
+
{ recursive: true }
|
|
13
|
+
)
|
|
14
|
+
)
|
|
15
|
+
);
|