@reckona/mreact-router 0.0.175 → 0.0.176
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/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +5 -49
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/build.d.ts +1 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +90 -0
- package/dist/build.js.map +1 -1
- package/dist/built-assets.d.ts +11 -0
- package/dist/built-assets.d.ts.map +1 -0
- package/dist/built-assets.js +130 -0
- package/dist/built-assets.js.map +1 -0
- package/dist/built-runtime.d.ts +53 -0
- package/dist/built-runtime.d.ts.map +1 -0
- package/dist/built-runtime.js +178 -0
- package/dist/built-runtime.js.map +1 -0
- package/dist/built-server-module-artifacts.d.ts +19 -0
- package/dist/built-server-module-artifacts.d.ts.map +1 -0
- package/dist/built-server-module-artifacts.js +217 -0
- package/dist/built-server-module-artifacts.js.map +1 -0
- package/dist/client-manifest-assets.d.ts +16 -0
- package/dist/client-manifest-assets.d.ts.map +1 -0
- package/dist/client-manifest-assets.js +60 -0
- package/dist/client-manifest-assets.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +31 -3
- package/dist/client.js.map +1 -1
- package/dist/node-server.d.ts +29 -0
- package/dist/node-server.d.ts.map +1 -0
- package/dist/node-server.js +81 -0
- package/dist/node-server.js.map +1 -0
- package/dist/render.d.ts +9 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +20 -41
- package/dist/render.js.map +1 -1
- package/dist/route-dispatch.d.ts +2 -0
- package/dist/route-dispatch.d.ts.map +1 -0
- package/dist/route-dispatch.js +16 -0
- package/dist/route-dispatch.js.map +1 -0
- package/dist/route-loader-runtime.d.ts +22 -0
- package/dist/route-loader-runtime.d.ts.map +1 -0
- package/dist/route-loader-runtime.js +30 -0
- package/dist/route-loader-runtime.js.map +1 -0
- package/dist/routes.d.ts +2 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +48 -1
- package/dist/routes.js.map +1 -1
- package/dist/serve.d.ts +4 -3
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +84 -582
- package/dist/serve.js.map +1 -1
- package/package.json +11 -11
- package/src/adapters/cloudflare.ts +5 -60
- package/src/build.ts +143 -0
- package/src/built-assets.ts +164 -0
- package/src/built-runtime.ts +312 -0
- package/src/built-server-module-artifacts.ts +340 -0
- package/src/client-manifest-assets.ts +92 -0
- package/src/client.ts +31 -3
- package/src/node-server.ts +129 -0
- package/src/render.ts +38 -60
- package/src/route-dispatch.ts +17 -0
- package/src/route-loader-runtime.ts +54 -0
- package/src/routes.ts +70 -1
- package/src/serve.ts +105 -863
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, isAbsolute, join, normalize, sep } from "node:path";
|
|
3
|
+
import { routeShellCandidates } from "./route-shells.js";
|
|
4
|
+
export async function loadBuiltServerModuleArtifacts(runtime, files, kind = "all") {
|
|
5
|
+
for (const file of files) {
|
|
6
|
+
await loadBuiltServerModuleArtifact(runtime, file, kind);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
async function loadBuiltServerModuleArtifact(runtime, file, kind = "all") {
|
|
10
|
+
if (kind === "all") {
|
|
11
|
+
await loadBuiltServerModuleArtifact(runtime, file, "request");
|
|
12
|
+
await loadBuiltServerModuleArtifact(runtime, file, "render");
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const artifactPath = kind === "request"
|
|
16
|
+
? runtime.serverModuleRequestFiles.get(file) ?? runtime.serverModuleFiles.get(file)
|
|
17
|
+
: runtime.serverModuleRenderFiles.get(file) ?? runtime.serverModuleFiles.get(file);
|
|
18
|
+
if (artifactPath === undefined) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const cached = runtime.serverModuleArtifactLoads.get(`${kind}\0${file}`);
|
|
22
|
+
if (cached !== undefined) {
|
|
23
|
+
await cached;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const loaded = readFile(artifactPath, "utf8")
|
|
27
|
+
.then((text) => {
|
|
28
|
+
const existing = runtime.serverModules.get(file) ?? {};
|
|
29
|
+
runtime.serverModules.set(file, mergeBuiltServerModuleArtifacts(existing, hydrateBuiltServerModuleArtifact(parseBuiltJsonArtifact(text, artifactPath, `built server module artifact for ${file}`), builtServerDirForArtifactPath(artifactPath))));
|
|
30
|
+
})
|
|
31
|
+
.catch((error) => {
|
|
32
|
+
runtime.serverModuleArtifactLoads.delete(`${kind}\0${file}`);
|
|
33
|
+
if (isMissingFileError(error)) {
|
|
34
|
+
throw builtArtifactReadError(`built server module artifact for ${file}`, artifactPath, error);
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
});
|
|
38
|
+
runtime.serverModuleArtifactLoads.set(`${kind}\0${file}`, loaded);
|
|
39
|
+
await loaded;
|
|
40
|
+
}
|
|
41
|
+
export function allBuiltServerModuleFiles(runtime) {
|
|
42
|
+
return new Set([
|
|
43
|
+
...runtime.serverModuleFiles.keys(),
|
|
44
|
+
...runtime.serverModuleRequestFiles.keys(),
|
|
45
|
+
...runtime.serverModuleRenderFiles.keys(),
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
function builtServerDirForArtifactPath(artifactPath) {
|
|
49
|
+
const marker = `${sep}server-modules${sep}`;
|
|
50
|
+
const index = artifactPath.lastIndexOf(marker);
|
|
51
|
+
return index === -1 ? dirname(dirname(artifactPath)) : artifactPath.slice(0, index);
|
|
52
|
+
}
|
|
53
|
+
function hydrateBuiltServerModuleArtifact(artifact, serverDir) {
|
|
54
|
+
return {
|
|
55
|
+
...(artifact.analysis === undefined ? {} : { analysis: artifact.analysis }),
|
|
56
|
+
...(artifact.loader === undefined
|
|
57
|
+
? {}
|
|
58
|
+
: { loader: hydrateBuiltServerModuleOutput(artifact.loader, serverDir) }),
|
|
59
|
+
...(artifact.routeMetadata === undefined
|
|
60
|
+
? {}
|
|
61
|
+
: { routeMetadata: hydrateBuiltServerModuleOutput(artifact.routeMetadata, serverDir) }),
|
|
62
|
+
...(artifact.request === undefined
|
|
63
|
+
? {}
|
|
64
|
+
: { request: hydrateBuiltServerModuleOutput(artifact.request, serverDir) }),
|
|
65
|
+
...(artifact.stream === undefined
|
|
66
|
+
? {}
|
|
67
|
+
: { stream: hydrateBuiltServerModuleOutput(artifact.stream, serverDir) }),
|
|
68
|
+
...(artifact.string === undefined
|
|
69
|
+
? {}
|
|
70
|
+
: { string: hydrateBuiltServerModuleOutput(artifact.string, serverDir) }),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function hydrateBuiltServerModuleOutput(output, serverDir) {
|
|
74
|
+
if (output.moduleFile === undefined || isAbsolute(output.moduleFile)) {
|
|
75
|
+
return output;
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
...output,
|
|
79
|
+
moduleFile: join(serverDir, safeBuiltServerManifestFilePath(output.moduleFile)),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function mergeBuiltServerModuleArtifacts(existing, loaded) {
|
|
83
|
+
return {
|
|
84
|
+
...existing,
|
|
85
|
+
...loaded,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export async function loadBuiltServerModuleArtifactsForRequest(runtime, routeFile, options = {}) {
|
|
89
|
+
const roots = [
|
|
90
|
+
join(runtime.appDir, "middleware.ts"),
|
|
91
|
+
join(runtime.appDir, "middleware.mreact.ts"),
|
|
92
|
+
...(routeFile === undefined
|
|
93
|
+
? []
|
|
94
|
+
: [
|
|
95
|
+
routeFile,
|
|
96
|
+
...(options.includeShells === false ? [] : shellFilesForRoute(runtime, routeFile)),
|
|
97
|
+
]),
|
|
98
|
+
];
|
|
99
|
+
const seen = new Set();
|
|
100
|
+
for (const file of roots) {
|
|
101
|
+
await loadBuiltServerModuleArtifactClosure(runtime, file, seen, "request");
|
|
102
|
+
}
|
|
103
|
+
if (options.includeRender === true) {
|
|
104
|
+
seen.clear();
|
|
105
|
+
for (const file of roots) {
|
|
106
|
+
await loadBuiltServerModuleArtifactClosure(runtime, file, seen, "render");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function loadBuiltServerModuleArtifactClosure(runtime, file, seen, kind) {
|
|
111
|
+
for (const closureFile of builtServerModuleClosureFiles(runtime, file)) {
|
|
112
|
+
if (seen.has(closureFile)) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
seen.add(closureFile);
|
|
116
|
+
await loadBuiltServerModuleArtifact(runtime, closureFile, kind);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function builtServerModuleClosureFiles(runtime, file) {
|
|
120
|
+
const cached = runtime.serverModuleClosureFiles.get(file);
|
|
121
|
+
if (cached !== undefined) {
|
|
122
|
+
return cached;
|
|
123
|
+
}
|
|
124
|
+
const closure = [];
|
|
125
|
+
collectBuiltServerModuleClosureFiles(runtime, file, new Set(), closure);
|
|
126
|
+
runtime.serverModuleClosureFiles.set(file, closure);
|
|
127
|
+
return closure;
|
|
128
|
+
}
|
|
129
|
+
function collectBuiltServerModuleClosureFiles(runtime, file, seen, closure) {
|
|
130
|
+
if (seen.has(file)) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
seen.add(file);
|
|
134
|
+
closure.push(file);
|
|
135
|
+
const source = runtime.serverSourceFiles.get(file);
|
|
136
|
+
if (source === undefined) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
for (const specifier of localServerModuleSpecifiers(source)) {
|
|
140
|
+
const resolved = resolveBuiltLocalServerSourceImport(runtime, file, specifier);
|
|
141
|
+
if (resolved !== undefined) {
|
|
142
|
+
collectBuiltServerModuleClosureFiles(runtime, resolved, seen, closure);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const localServerModuleImportPattern = /\b(?:import|export)\s+(?:type\s+)?(?:[^"']*?\s+from\s*)?["'](?<source>\.{1,2}\/[^"']+)["']/g;
|
|
147
|
+
function localServerModuleSpecifiers(code) {
|
|
148
|
+
const specifiers = new Set();
|
|
149
|
+
localServerModuleImportPattern.lastIndex = 0;
|
|
150
|
+
for (const match of code.matchAll(localServerModuleImportPattern)) {
|
|
151
|
+
const source = match.groups?.source;
|
|
152
|
+
if (source !== undefined) {
|
|
153
|
+
specifiers.add(source);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return Array.from(specifiers);
|
|
157
|
+
}
|
|
158
|
+
function resolveBuiltLocalServerSourceImport(runtime, fromFile, specifier) {
|
|
159
|
+
const base = join(dirname(fromFile), specifier);
|
|
160
|
+
for (const candidate of localServerSourceImportCandidates(base)) {
|
|
161
|
+
if (runtime.serverSourceFiles.has(candidate)) {
|
|
162
|
+
return candidate;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
function localServerSourceImportCandidates(base) {
|
|
168
|
+
const candidates = [base];
|
|
169
|
+
if (base.endsWith(".js")) {
|
|
170
|
+
const withoutJs = base.slice(0, -".js".length);
|
|
171
|
+
candidates.push(`${withoutJs}.ts`, `${withoutJs}.tsx`, `${withoutJs}.mreact.tsx`);
|
|
172
|
+
}
|
|
173
|
+
else if (base.endsWith(".jsx")) {
|
|
174
|
+
const withoutJsx = base.slice(0, -".jsx".length);
|
|
175
|
+
candidates.push(`${withoutJsx}.tsx`, `${withoutJsx}.mreact.tsx`);
|
|
176
|
+
}
|
|
177
|
+
else if (base.endsWith(".mreact")) {
|
|
178
|
+
candidates.push(`${base}.tsx`);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
candidates.push(`${base}.ts`, `${base}.tsx`, `${base}.mreact.tsx`, join(base, "index.ts"), join(base, "index.tsx"), join(base, "index.mreact.tsx"));
|
|
182
|
+
}
|
|
183
|
+
return candidates;
|
|
184
|
+
}
|
|
185
|
+
function shellFilesForRoute(runtime, routeFile) {
|
|
186
|
+
return routeShellCandidates(runtime.appDir, routeFile)
|
|
187
|
+
.map((candidate) => candidate.file)
|
|
188
|
+
.filter((file) => runtime.serverSourceFiles.has(file));
|
|
189
|
+
}
|
|
190
|
+
function isMissingFileError(error) {
|
|
191
|
+
return (typeof error === "object" &&
|
|
192
|
+
error !== null &&
|
|
193
|
+
"code" in error &&
|
|
194
|
+
error.code === "ENOENT");
|
|
195
|
+
}
|
|
196
|
+
function builtArtifactReadError(label, artifactPath, error) {
|
|
197
|
+
const prefix = isMissingFileError(error) ? "Missing" : "Unable to read";
|
|
198
|
+
const detail = error instanceof Error && error.message !== "" ? `: ${error.message}` : "";
|
|
199
|
+
return new Error(`${prefix} ${label}: ${artifactPath}${detail}`, { cause: error });
|
|
200
|
+
}
|
|
201
|
+
function parseBuiltJsonArtifact(text, artifactPath, label) {
|
|
202
|
+
try {
|
|
203
|
+
return JSON.parse(text);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
const detail = error instanceof Error && error.message !== "" ? `: ${error.message}` : "";
|
|
207
|
+
throw new Error(`Invalid ${label}: ${artifactPath}${detail}`, { cause: error });
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function safeBuiltServerManifestFilePath(pathname) {
|
|
211
|
+
const normalized = normalize(pathname);
|
|
212
|
+
if (isAbsolute(normalized) || normalized === ".." || normalized.startsWith("../")) {
|
|
213
|
+
throw new Error(`Invalid built app manifest file path: ${pathname}`);
|
|
214
|
+
}
|
|
215
|
+
return normalized;
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=built-server-module-artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-server-module-artifacts.js","sourceRoot":"","sources":["../src/built-server-module-artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, join, normalize, sep } from \"node:path\";\nimport type { BuiltServerModuleArtifact } from \"./build.js\";\nimport { routeShellCandidates } from \"./route-shells.js\";\n\nexport interface BuiltServerModuleArtifactRuntime {\n appDir: string;\n serverModuleArtifactLoads: Map<string, Promise<void>>;\n serverModuleClosureFiles: Map<string, readonly string[]>;\n serverModuleFiles: ReadonlyMap<string, string>;\n serverModuleRenderFiles: ReadonlyMap<string, string>;\n serverModuleRequestFiles: ReadonlyMap<string, string>;\n serverModules: Map<string, BuiltServerModuleArtifact>;\n serverSourceFiles: ReadonlyMap<string, string>;\n}\n\nexport type BuiltServerModuleArtifactKind = \"all\" | \"render\" | \"request\";\n\nexport async function loadBuiltServerModuleArtifacts(\n runtime: BuiltServerModuleArtifactRuntime,\n files: Iterable<string>,\n kind: BuiltServerModuleArtifactKind = \"all\",\n): Promise<void> {\n for (const file of files) {\n await loadBuiltServerModuleArtifact(runtime, file, kind);\n }\n}\n\nasync function loadBuiltServerModuleArtifact(\n runtime: BuiltServerModuleArtifactRuntime,\n file: string,\n kind: BuiltServerModuleArtifactKind = \"all\",\n): Promise<void> {\n if (kind === \"all\") {\n await loadBuiltServerModuleArtifact(runtime, file, \"request\");\n await loadBuiltServerModuleArtifact(runtime, file, \"render\");\n return;\n }\n\n const artifactPath =\n kind === \"request\"\n ? runtime.serverModuleRequestFiles.get(file) ?? runtime.serverModuleFiles.get(file)\n : runtime.serverModuleRenderFiles.get(file) ?? runtime.serverModuleFiles.get(file);\n\n if (artifactPath === undefined) {\n return;\n }\n\n const cached = runtime.serverModuleArtifactLoads.get(`${kind}\\0${file}`);\n\n if (cached !== undefined) {\n await cached;\n return;\n }\n\n const loaded = readFile(artifactPath, \"utf8\")\n .then((text) => {\n const existing = runtime.serverModules.get(file) ?? {};\n runtime.serverModules.set(\n file,\n mergeBuiltServerModuleArtifacts(\n existing,\n hydrateBuiltServerModuleArtifact(\n parseBuiltJsonArtifact<BuiltServerModuleArtifact>(\n text,\n artifactPath,\n `built server module artifact for ${file}`,\n ),\n builtServerDirForArtifactPath(artifactPath),\n ),\n ),\n );\n })\n .catch((error) => {\n runtime.serverModuleArtifactLoads.delete(`${kind}\\0${file}`);\n if (isMissingFileError(error)) {\n throw builtArtifactReadError(`built server module artifact for ${file}`, artifactPath, error);\n }\n throw error;\n });\n runtime.serverModuleArtifactLoads.set(`${kind}\\0${file}`, loaded);\n\n await loaded;\n}\n\nexport function allBuiltServerModuleFiles(\n runtime: BuiltServerModuleArtifactRuntime,\n): Iterable<string> {\n return new Set([\n ...runtime.serverModuleFiles.keys(),\n ...runtime.serverModuleRequestFiles.keys(),\n ...runtime.serverModuleRenderFiles.keys(),\n ]);\n}\n\nfunction builtServerDirForArtifactPath(artifactPath: string): string {\n const marker = `${sep}server-modules${sep}`;\n const index = artifactPath.lastIndexOf(marker);\n\n return index === -1 ? dirname(dirname(artifactPath)) : artifactPath.slice(0, index);\n}\n\nfunction hydrateBuiltServerModuleArtifact(\n artifact: BuiltServerModuleArtifact,\n serverDir: string,\n): BuiltServerModuleArtifact {\n return {\n ...(artifact.analysis === undefined ? {} : { analysis: artifact.analysis }),\n ...(artifact.loader === undefined\n ? {}\n : { loader: hydrateBuiltServerModuleOutput(artifact.loader, serverDir) }),\n ...(artifact.routeMetadata === undefined\n ? {}\n : { routeMetadata: hydrateBuiltServerModuleOutput(artifact.routeMetadata, serverDir) }),\n ...(artifact.request === undefined\n ? {}\n : { request: hydrateBuiltServerModuleOutput(artifact.request, serverDir) }),\n ...(artifact.stream === undefined\n ? {}\n : { stream: hydrateBuiltServerModuleOutput(artifact.stream, serverDir) }),\n ...(artifact.string === undefined\n ? {}\n : { string: hydrateBuiltServerModuleOutput(artifact.string, serverDir) }),\n };\n}\n\nfunction hydrateBuiltServerModuleOutput<T extends { moduleFile?: string | undefined }>(\n output: T,\n serverDir: string,\n): T {\n if (output.moduleFile === undefined || isAbsolute(output.moduleFile)) {\n return output;\n }\n\n return {\n ...output,\n moduleFile: join(serverDir, safeBuiltServerManifestFilePath(output.moduleFile)),\n };\n}\n\nfunction mergeBuiltServerModuleArtifacts(\n existing: BuiltServerModuleArtifact,\n loaded: BuiltServerModuleArtifact,\n): BuiltServerModuleArtifact {\n return {\n ...existing,\n ...loaded,\n };\n}\n\nexport async function loadBuiltServerModuleArtifactsForRequest(\n runtime: BuiltServerModuleArtifactRuntime,\n routeFile: string | undefined,\n options: {\n includeRender?: boolean | undefined;\n includeShells?: boolean | undefined;\n } = {},\n): Promise<void> {\n const roots = [\n join(runtime.appDir, \"middleware.ts\"),\n join(runtime.appDir, \"middleware.mreact.ts\"),\n ...(routeFile === undefined\n ? []\n : [\n routeFile,\n ...(options.includeShells === false ? [] : shellFilesForRoute(runtime, routeFile)),\n ]),\n ];\n const seen = new Set<string>();\n\n for (const file of roots) {\n await loadBuiltServerModuleArtifactClosure(runtime, file, seen, \"request\");\n }\n\n if (options.includeRender === true) {\n seen.clear();\n for (const file of roots) {\n await loadBuiltServerModuleArtifactClosure(runtime, file, seen, \"render\");\n }\n }\n}\n\nasync function loadBuiltServerModuleArtifactClosure(\n runtime: BuiltServerModuleArtifactRuntime,\n file: string,\n seen: Set<string>,\n kind: BuiltServerModuleArtifactKind,\n): Promise<void> {\n for (const closureFile of builtServerModuleClosureFiles(runtime, file)) {\n if (seen.has(closureFile)) {\n continue;\n }\n seen.add(closureFile);\n await loadBuiltServerModuleArtifact(runtime, closureFile, kind);\n }\n}\n\nfunction builtServerModuleClosureFiles(\n runtime: BuiltServerModuleArtifactRuntime,\n file: string,\n): readonly string[] {\n const cached = runtime.serverModuleClosureFiles.get(file);\n if (cached !== undefined) {\n return cached;\n }\n\n const closure: string[] = [];\n collectBuiltServerModuleClosureFiles(runtime, file, new Set(), closure);\n runtime.serverModuleClosureFiles.set(file, closure);\n return closure;\n}\n\nfunction collectBuiltServerModuleClosureFiles(\n runtime: BuiltServerModuleArtifactRuntime,\n file: string,\n seen: Set<string>,\n closure: string[],\n): void {\n if (seen.has(file)) {\n return;\n }\n seen.add(file);\n closure.push(file);\n\n const source = runtime.serverSourceFiles.get(file);\n if (source === undefined) {\n return;\n }\n\n for (const specifier of localServerModuleSpecifiers(source)) {\n const resolved = resolveBuiltLocalServerSourceImport(runtime, file, specifier);\n if (resolved !== undefined) {\n collectBuiltServerModuleClosureFiles(runtime, resolved, seen, closure);\n }\n }\n}\n\nconst localServerModuleImportPattern =\n /\\b(?:import|export)\\s+(?:type\\s+)?(?:[^\"']*?\\s+from\\s*)?[\"'](?<source>\\.{1,2}\\/[^\"']+)[\"']/g;\n\nfunction localServerModuleSpecifiers(code: string): string[] {\n const specifiers = new Set<string>();\n localServerModuleImportPattern.lastIndex = 0;\n\n for (const match of code.matchAll(localServerModuleImportPattern)) {\n const source = match.groups?.source;\n\n if (source !== undefined) {\n specifiers.add(source);\n }\n }\n\n return Array.from(specifiers);\n}\n\nfunction resolveBuiltLocalServerSourceImport(\n runtime: BuiltServerModuleArtifactRuntime,\n fromFile: string,\n specifier: string,\n): string | undefined {\n const base = join(dirname(fromFile), specifier);\n\n for (const candidate of localServerSourceImportCandidates(base)) {\n if (runtime.serverSourceFiles.has(candidate)) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nfunction localServerSourceImportCandidates(base: string): string[] {\n const candidates = [base];\n\n if (base.endsWith(\".js\")) {\n const withoutJs = base.slice(0, -\".js\".length);\n candidates.push(`${withoutJs}.ts`, `${withoutJs}.tsx`, `${withoutJs}.mreact.tsx`);\n } else if (base.endsWith(\".jsx\")) {\n const withoutJsx = base.slice(0, -\".jsx\".length);\n candidates.push(`${withoutJsx}.tsx`, `${withoutJsx}.mreact.tsx`);\n } else if (base.endsWith(\".mreact\")) {\n candidates.push(`${base}.tsx`);\n } else {\n candidates.push(\n `${base}.ts`,\n `${base}.tsx`,\n `${base}.mreact.tsx`,\n join(base, \"index.ts\"),\n join(base, \"index.tsx\"),\n join(base, \"index.mreact.tsx\"),\n );\n }\n\n return candidates;\n}\n\nfunction shellFilesForRoute(\n runtime: BuiltServerModuleArtifactRuntime,\n routeFile: string,\n): string[] {\n return routeShellCandidates(runtime.appDir, routeFile)\n .map((candidate) => candidate.file)\n .filter((file) => runtime.serverSourceFiles.has(file));\n}\n\nfunction isMissingFileError(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code?: unknown }).code === \"ENOENT\"\n );\n}\n\nfunction builtArtifactReadError(label: string, artifactPath: string, error: unknown): Error {\n const prefix = isMissingFileError(error) ? \"Missing\" : \"Unable to read\";\n const detail = error instanceof Error && error.message !== \"\" ? `: ${error.message}` : \"\";\n\n return new Error(`${prefix} ${label}: ${artifactPath}${detail}`, { cause: error });\n}\n\nfunction parseBuiltJsonArtifact<T>(text: string, artifactPath: string, label: string): T {\n try {\n return JSON.parse(text) as T;\n } catch (error) {\n const detail = error instanceof Error && error.message !== \"\" ? `: ${error.message}` : \"\";\n\n throw new Error(`Invalid ${label}: ${artifactPath}${detail}`, { cause: error });\n }\n}\n\nfunction safeBuiltServerManifestFilePath(pathname: string): string {\n const normalized = normalize(pathname);\n\n if (isAbsolute(normalized) || normalized === \"..\" || normalized.startsWith(\"../\")) {\n throw new Error(`Invalid built app manifest file path: ${pathname}`);\n }\n\n return normalized;\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ClientManifestAssetRoute {
|
|
2
|
+
css?: readonly string[] | undefined;
|
|
3
|
+
imports?: readonly string[] | undefined;
|
|
4
|
+
navigationScript?: string | undefined;
|
|
5
|
+
script?: string | undefined;
|
|
6
|
+
sourceMap?: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
export interface ClientManifestAssetSource {
|
|
9
|
+
assets?: readonly string[] | undefined;
|
|
10
|
+
routes: readonly ClientManifestAssetRoute[];
|
|
11
|
+
}
|
|
12
|
+
export declare function clientManifestAssetPaths(manifest: ClientManifestAssetSource, options?: {
|
|
13
|
+
extraPaths?: readonly string[] | undefined;
|
|
14
|
+
prefix?: string | undefined;
|
|
15
|
+
}): Set<string>;
|
|
16
|
+
//# sourceMappingURL=client-manifest-assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-manifest-assets.d.ts","sourceRoot":"","sources":["../src/client-manifest-assets.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC7C;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,yBAAyB,EACnC,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxB,GACL,GAAG,CAAC,MAAM,CAAC,CAqCb"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export function clientManifestAssetPaths(manifest, options = {}) {
|
|
2
|
+
const prefix = normalizeClientManifestAssetPrefix(options.prefix ?? "");
|
|
3
|
+
const paths = new Set([`${prefix}manifest.json`]);
|
|
4
|
+
for (const route of manifest.routes) {
|
|
5
|
+
for (const asset of [
|
|
6
|
+
route.script,
|
|
7
|
+
route.sourceMap,
|
|
8
|
+
route.navigationScript,
|
|
9
|
+
...(route.css ?? []),
|
|
10
|
+
...(route.imports ?? []),
|
|
11
|
+
]) {
|
|
12
|
+
const path = safeClientManifestAssetPath(asset);
|
|
13
|
+
if (path !== undefined) {
|
|
14
|
+
paths.add(`${prefix}${path}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
for (const asset of manifest.assets ?? []) {
|
|
19
|
+
const path = safeClientManifestAssetPath(asset);
|
|
20
|
+
if (path !== undefined) {
|
|
21
|
+
paths.add(`${prefix}${path}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
for (const asset of options.extraPaths ?? []) {
|
|
25
|
+
const path = safeClientManifestAssetPath(asset);
|
|
26
|
+
if (path !== undefined) {
|
|
27
|
+
paths.add(`${prefix}${path}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return paths;
|
|
31
|
+
}
|
|
32
|
+
function normalizeClientManifestAssetPrefix(prefix) {
|
|
33
|
+
if (prefix === "") {
|
|
34
|
+
return "";
|
|
35
|
+
}
|
|
36
|
+
const withLeadingSlash = prefix.startsWith("/") ? prefix : `/${prefix}`;
|
|
37
|
+
return withLeadingSlash.endsWith("/") ? withLeadingSlash : `${withLeadingSlash}/`;
|
|
38
|
+
}
|
|
39
|
+
function safeClientManifestAssetPath(asset) {
|
|
40
|
+
if (asset === undefined || asset === "" || asset.startsWith("/") || asset.includes("\\")) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const segments = asset.split("/");
|
|
44
|
+
return segments.some((segment) => unsafeClientManifestAssetSegment(segment))
|
|
45
|
+
? undefined
|
|
46
|
+
: segments.join("/");
|
|
47
|
+
}
|
|
48
|
+
function unsafeClientManifestAssetSegment(segment) {
|
|
49
|
+
if (segment === "" || segment === "." || segment === "..") {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const decoded = decodeURIComponent(segment);
|
|
54
|
+
return decoded === "." || decoded === ".." || decoded.includes("/") || decoded.includes("\\");
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=client-manifest-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-manifest-assets.js","sourceRoot":"","sources":["../src/client-manifest-assets.ts"],"names":[],"mappings":"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","sourcesContent":["export interface ClientManifestAssetRoute {\n css?: readonly string[] | undefined;\n imports?: readonly string[] | undefined;\n navigationScript?: string | undefined;\n script?: string | undefined;\n sourceMap?: string | undefined;\n}\n\nexport interface ClientManifestAssetSource {\n assets?: readonly string[] | undefined;\n routes: readonly ClientManifestAssetRoute[];\n}\n\nexport function clientManifestAssetPaths(\n manifest: ClientManifestAssetSource,\n options: {\n extraPaths?: readonly string[] | undefined;\n prefix?: string | undefined;\n } = {},\n): Set<string> {\n const prefix = normalizeClientManifestAssetPrefix(options.prefix ?? \"\");\n const paths = new Set<string>([`${prefix}manifest.json`]);\n\n for (const route of manifest.routes) {\n for (const asset of [\n route.script,\n route.sourceMap,\n route.navigationScript,\n ...(route.css ?? []),\n ...(route.imports ?? []),\n ]) {\n const path = safeClientManifestAssetPath(asset);\n\n if (path !== undefined) {\n paths.add(`${prefix}${path}`);\n }\n }\n }\n\n for (const asset of manifest.assets ?? []) {\n const path = safeClientManifestAssetPath(asset);\n\n if (path !== undefined) {\n paths.add(`${prefix}${path}`);\n }\n }\n\n for (const asset of options.extraPaths ?? []) {\n const path = safeClientManifestAssetPath(asset);\n\n if (path !== undefined) {\n paths.add(`${prefix}${path}`);\n }\n }\n\n return paths;\n}\n\nfunction normalizeClientManifestAssetPrefix(prefix: string): string {\n if (prefix === \"\") {\n return \"\";\n }\n\n const withLeadingSlash = prefix.startsWith(\"/\") ? prefix : `/${prefix}`;\n\n return withLeadingSlash.endsWith(\"/\") ? withLeadingSlash : `${withLeadingSlash}/`;\n}\n\nfunction safeClientManifestAssetPath(asset: string | undefined): string | undefined {\n if (asset === undefined || asset === \"\" || asset.startsWith(\"/\") || asset.includes(\"\\\\\")) {\n return undefined;\n }\n\n const segments = asset.split(\"/\");\n\n return segments.some((segment) => unsafeClientManifestAssetSegment(segment))\n ? undefined\n : segments.join(\"/\");\n}\n\nfunction unsafeClientManifestAssetSegment(segment: string): boolean {\n if (segment === \"\" || segment === \".\" || segment === \"..\") {\n return true;\n }\n\n try {\n const decoded = decodeURIComponent(segment);\n return decoded === \".\" || decoded === \"..\" || decoded.includes(\"/\") || decoded.includes(\"\\\\\");\n } catch {\n return true;\n }\n}\n"]}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1833,7 +1833,7 @@ export async function __mreactPrefetch(url) {
|
|
|
1833
1833
|
return true;
|
|
1834
1834
|
}
|
|
1835
1835
|
|
|
1836
|
-
|
|
1836
|
+
__mreactRememberPrefetchedUrl(href);
|
|
1837
1837
|
|
|
1838
1838
|
const script = __mreactRouteScriptForNavigationUrl(href);
|
|
1839
1839
|
|
|
@@ -1860,6 +1860,33 @@ function __mreactPrefetchNavigationHtml(href) {
|
|
|
1860
1860
|
}
|
|
1861
1861
|
|
|
1862
1862
|
const __mreactNavigationHtmlCacheMaxEntries = 64;
|
|
1863
|
+
const __mreactNavigationPrefetchHistoryMaxEntries = 64;
|
|
1864
|
+
|
|
1865
|
+
function __mreactRememberPrefetchedUrl(href) {
|
|
1866
|
+
__mreactRememberPrefetchHistory(__mreactNavigationState.prefetchedUrls, href);
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
function __mreactRememberPrefetchedScript(href) {
|
|
1870
|
+
__mreactRememberPrefetchHistory(__mreactNavigationState.prefetchedScripts, href);
|
|
1871
|
+
}
|
|
1872
|
+
|
|
1873
|
+
function __mreactRememberPrefetchHistory(history, href) {
|
|
1874
|
+
if (history.has(href)) {
|
|
1875
|
+
history.delete(href);
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1878
|
+
history.add(href);
|
|
1879
|
+
|
|
1880
|
+
while (history.size > __mreactNavigationPrefetchHistoryMaxEntries) {
|
|
1881
|
+
const oldestHref = history.keys().next().value;
|
|
1882
|
+
|
|
1883
|
+
if (oldestHref === undefined) {
|
|
1884
|
+
return;
|
|
1885
|
+
}
|
|
1886
|
+
|
|
1887
|
+
history.delete(oldestHref);
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1863
1890
|
|
|
1864
1891
|
function __mreactCachedNavigationHtml(href) {
|
|
1865
1892
|
const html = __mreactNavigationState.cache.get(href);
|
|
@@ -1888,6 +1915,7 @@ function __mreactRememberNavigationHtml(href, html) {
|
|
|
1888
1915
|
}
|
|
1889
1916
|
|
|
1890
1917
|
__mreactNavigationState.cache.delete(oldestHref);
|
|
1918
|
+
__mreactNavigationState.prefetchedUrls.delete(oldestHref);
|
|
1891
1919
|
}
|
|
1892
1920
|
}
|
|
1893
1921
|
|
|
@@ -1908,7 +1936,7 @@ function __mreactPrefetchRouteScript(script) {
|
|
|
1908
1936
|
|
|
1909
1937
|
for (const link of Array.from(document.querySelectorAll('link[rel="modulepreload"][href]'))) {
|
|
1910
1938
|
if (link.href === href) {
|
|
1911
|
-
|
|
1939
|
+
__mreactRememberPrefetchedScript(href);
|
|
1912
1940
|
return true;
|
|
1913
1941
|
}
|
|
1914
1942
|
}
|
|
@@ -1917,7 +1945,7 @@ function __mreactPrefetchRouteScript(script) {
|
|
|
1917
1945
|
link.rel = "modulepreload";
|
|
1918
1946
|
link.href = href;
|
|
1919
1947
|
document.head.appendChild(link);
|
|
1920
|
-
|
|
1948
|
+
__mreactRememberPrefetchedScript(href);
|
|
1921
1949
|
return true;
|
|
1922
1950
|
}
|
|
1923
1951
|
|