@react-router/dev 0.0.0-experimental-e16afd9b7 → 0.0.0-experimental-13d6d438f
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/cli/commands.js +1 -1
- package/dist/cli/detectPackageManager.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/run.js +1 -1
- package/dist/cli/useJavascript.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/colors.js +1 -1
- package/dist/config/findConfig.js +1 -1
- package/dist/config/flatRoutes.js +1 -1
- package/dist/config/format.js +1 -1
- package/dist/config/routes.js +1 -1
- package/dist/config.d.ts +0 -2
- package/dist/config.js +5 -22
- package/dist/index.js +1 -1
- package/dist/invariant.js +1 -1
- package/dist/vite/babel.js +1 -1
- package/dist/vite/build.js +2 -15
- package/dist/vite/cloudflare-proxy-plugin.js +1 -1
- package/dist/vite/dev.js +1 -1
- package/dist/vite/import-vite-esm-sync.js +1 -1
- package/dist/vite/index.js +1 -1
- package/dist/vite/node-adapter.js +1 -1
- package/dist/vite/plugin.d.ts +0 -9
- package/dist/vite/plugin.js +8 -219
- package/dist/vite/profiler.js +1 -1
- package/dist/vite/remove-exports.d.ts +1 -3
- package/dist/vite/remove-exports.js +2 -18
- package/dist/vite/resolve-file-url.js +1 -1
- package/dist/vite/styles.js +1 -1
- package/dist/vite/vmod.js +1 -1
- package/package.json +7 -13
- package/dist/config/defaults/entry.client.rsc.tsx +0 -90
- package/dist/config/defaults/entry.react-server.node.tsx +0 -15
- package/dist/config/defaults/entry.react-server.web.tsx +0 -9
- package/dist/config/defaults/entry.server.node.rsc.tsx +0 -164
- package/dist/runtime.client.d.ts +0 -1
- package/dist/runtime.client.js +0 -19
package/dist/cli/commands.js
CHANGED
package/dist/cli/index.js
CHANGED
package/dist/cli/run.js
CHANGED
package/dist/cli.js
CHANGED
package/dist/colors.js
CHANGED
package/dist/config/format.js
CHANGED
package/dist/config/routes.js
CHANGED
package/dist/config.d.ts
CHANGED
|
@@ -39,7 +39,6 @@ interface FutureConfig {
|
|
|
39
39
|
v3_fetcherPersist: boolean;
|
|
40
40
|
v3_relativeSplatPath: boolean;
|
|
41
41
|
v3_throwAbortReason: boolean;
|
|
42
|
-
unstable_serverComponents: boolean;
|
|
43
42
|
}
|
|
44
43
|
export type BuildManifest = DefaultBuildManifest | ServerBundlesBuildManifest;
|
|
45
44
|
type BuildEndHook = (args: {
|
|
@@ -257,7 +256,6 @@ export declare function resolveEntryFiles({ rootDirectory, reactRouterConfig, }:
|
|
|
257
256
|
reactRouterConfig: ResolvedVitePluginConfig;
|
|
258
257
|
}): Promise<{
|
|
259
258
|
entryClientFilePath: string;
|
|
260
|
-
entryReactServerFilePath: string | undefined;
|
|
261
259
|
entryServerFilePath: string;
|
|
262
260
|
}>;
|
|
263
261
|
export {};
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-13d6d438f
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -187,8 +187,7 @@ async function resolveReactRouterConfig({
|
|
|
187
187
|
let future = {
|
|
188
188
|
v3_fetcherPersist: (userFuture === null || userFuture === void 0 ? void 0 : userFuture.v3_fetcherPersist) === true,
|
|
189
189
|
v3_relativeSplatPath: (userFuture === null || userFuture === void 0 ? void 0 : userFuture.v3_relativeSplatPath) === true,
|
|
190
|
-
v3_throwAbortReason: (userFuture === null || userFuture === void 0 ? void 0 : userFuture.v3_throwAbortReason) === true
|
|
191
|
-
unstable_serverComponents: (userFuture === null || userFuture === void 0 ? void 0 : userFuture.unstable_serverComponents) === true
|
|
190
|
+
v3_throwAbortReason: (userFuture === null || userFuture === void 0 ? void 0 : userFuture.v3_throwAbortReason) === true
|
|
192
191
|
};
|
|
193
192
|
let reactRouterConfig = deepFreeze({
|
|
194
193
|
appDirectory,
|
|
@@ -224,13 +223,10 @@ async function resolveEntryFiles({
|
|
|
224
223
|
let defaultsDirectory = path__default["default"].resolve(__dirname, "config", "defaults");
|
|
225
224
|
let userEntryClientFile = findEntry(appDirectory, "entry.client");
|
|
226
225
|
let userEntryServerFile = findEntry(appDirectory, "entry.server");
|
|
227
|
-
let userEntryReactServerFile = findEntry(appDirectory, "entry.react-server");
|
|
228
226
|
let entryServerFile;
|
|
229
|
-
let
|
|
230
|
-
let entryClientFile = userEntryClientFile || future.unstable_serverComponents ? "entry.client.rsc.tsx" : "entry.client.tsx";
|
|
227
|
+
let entryClientFile = userEntryClientFile || "entry.client.tsx";
|
|
231
228
|
let pkgJson = await PackageJson__default["default"].load(rootDirectory);
|
|
232
229
|
let deps = pkgJson.content.dependencies ?? {};
|
|
233
|
-
let serverRuntime = deps["@react-router/deno"] ? "deno" : deps["@react-router/cloudflare"] ? "cloudflare" : deps["@react-router/node"] ? "node" : undefined;
|
|
234
230
|
if (!reactRouterConfig.ssr) {
|
|
235
231
|
// This is a super-simple default since we don't need streaming in SPA Mode.
|
|
236
232
|
// We can include this in a remix-spa template, but right now `npx remix reveal`
|
|
@@ -244,6 +240,7 @@ async function resolveEntryFiles({
|
|
|
244
240
|
} else if (userEntryServerFile) {
|
|
245
241
|
entryServerFile = userEntryServerFile;
|
|
246
242
|
} else {
|
|
243
|
+
let serverRuntime = deps["@react-router/deno"] ? "deno" : deps["@react-router/cloudflare"] ? "cloudflare" : deps["@react-router/node"] ? "node" : undefined;
|
|
247
244
|
if (!serverRuntime) {
|
|
248
245
|
let serverRuntimes = ["@react-router/deno", "@react-router/cloudflare", "@react-router/node"];
|
|
249
246
|
let formattedList = disjunctionListFormat.format(serverRuntimes);
|
|
@@ -264,26 +261,12 @@ async function resolveEntryFiles({
|
|
|
264
261
|
stdio: "inherit"
|
|
265
262
|
});
|
|
266
263
|
}
|
|
267
|
-
entryServerFile =
|
|
268
|
-
}
|
|
269
|
-
if (future.unstable_serverComponents) {
|
|
270
|
-
if (userEntryReactServerFile) {
|
|
271
|
-
entryReactServerFile = userEntryReactServerFile;
|
|
272
|
-
} else {
|
|
273
|
-
if (!serverRuntime) {
|
|
274
|
-
let serverRuntimes = ["@react-router/deno", "@react-router/cloudflare", "@react-router/node"];
|
|
275
|
-
let formattedList = disjunctionListFormat.format(serverRuntimes);
|
|
276
|
-
throw new Error(`Could not determine server runtime. Please install one of the following: ${formattedList}`);
|
|
277
|
-
}
|
|
278
|
-
entryReactServerFile = `entry.react-server.${serverRuntime === "node" ? serverRuntime : "web"}.tsx`;
|
|
279
|
-
}
|
|
264
|
+
entryServerFile = `entry.server.${serverRuntime}.tsx`;
|
|
280
265
|
}
|
|
281
266
|
let entryClientFilePath = userEntryClientFile ? path__default["default"].resolve(reactRouterConfig.appDirectory, userEntryClientFile) : path__default["default"].resolve(defaultsDirectory, entryClientFile);
|
|
282
267
|
let entryServerFilePath = userEntryServerFile ? path__default["default"].resolve(reactRouterConfig.appDirectory, userEntryServerFile) : path__default["default"].resolve(defaultsDirectory, entryServerFile);
|
|
283
|
-
let entryReactServerFilePath = userEntryReactServerFile ? path__default["default"].resolve(reactRouterConfig.appDirectory, userEntryReactServerFile) : entryReactServerFile ? path__default["default"].resolve(defaultsDirectory, entryReactServerFile) : undefined;
|
|
284
268
|
return {
|
|
285
269
|
entryClientFilePath,
|
|
286
|
-
entryReactServerFilePath,
|
|
287
270
|
entryServerFilePath
|
|
288
271
|
};
|
|
289
272
|
}
|
package/dist/index.js
CHANGED
package/dist/invariant.js
CHANGED
package/dist/vite/babel.js
CHANGED
package/dist/vite/build.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-13d6d438f
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -227,16 +227,7 @@ async function build(root, {
|
|
|
227
227
|
});
|
|
228
228
|
}
|
|
229
229
|
await cleanBuildDirectory(viteConfig, ctx);
|
|
230
|
-
//
|
|
231
|
-
if (reactRouterConfig.future.unstable_serverComponents) {
|
|
232
|
-
// TODO: This will be handled by the vite env API in the future
|
|
233
|
-
process.env.REACT_SERVER_BUILD = "1";
|
|
234
|
-
await viteBuild({
|
|
235
|
-
ssr: true
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
process.env.REACT_SERVER_BUILD = "";
|
|
239
|
-
// Run the Vite client build second
|
|
230
|
+
// Run the Vite client build first
|
|
240
231
|
await viteBuild({
|
|
241
232
|
ssr: false
|
|
242
233
|
});
|
|
@@ -276,10 +267,6 @@ async function build(root, {
|
|
|
276
267
|
reactRouterConfig,
|
|
277
268
|
viteConfig
|
|
278
269
|
}));
|
|
279
|
-
const {
|
|
280
|
-
serverModules
|
|
281
|
-
} = plugin.getReactServerOptions();
|
|
282
|
-
invariant["default"](!serverModules.size, "`use server` is not yet supported.");
|
|
283
270
|
}
|
|
284
271
|
|
|
285
272
|
exports.build = build;
|
package/dist/vite/dev.js
CHANGED
package/dist/vite/index.js
CHANGED
package/dist/vite/plugin.d.ts
CHANGED
|
@@ -59,7 +59,6 @@ type ReactRouterPluginSsrBuildContext = {
|
|
|
59
59
|
export type ReactRouterPluginContext = ReactRouterPluginSsrBuildContext & {
|
|
60
60
|
rootDirectory: string;
|
|
61
61
|
entryClientFilePath: string;
|
|
62
|
-
entryReactServerFilePath?: string;
|
|
63
62
|
entryServerFilePath: string;
|
|
64
63
|
reactRouterConfig: ResolvedVitePluginConfig;
|
|
65
64
|
viteManifestEnabled: boolean;
|
|
@@ -69,12 +68,4 @@ type MaybePromise<T> = T | Promise<T>;
|
|
|
69
68
|
export declare let setReactRouterDevLoadContext: (loadContext: (request: Request) => MaybePromise<Record<string, unknown>>) => void;
|
|
70
69
|
export type ReactRouterVitePlugin = (config?: VitePluginConfig) => Vite.Plugin[];
|
|
71
70
|
export declare const reactRouterVitePlugin: ReactRouterVitePlugin;
|
|
72
|
-
declare global {
|
|
73
|
-
var __clientModules: Set<string>;
|
|
74
|
-
var __serverModules: Set<string>;
|
|
75
|
-
}
|
|
76
|
-
export declare function getReactServerOptions(): {
|
|
77
|
-
clientModules: Set<string>;
|
|
78
|
-
serverModules: Set<string>;
|
|
79
|
-
};
|
|
80
71
|
export {};
|
package/dist/vite/plugin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-13d6d438f
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -22,7 +22,6 @@ var reactRouter = require('react-router');
|
|
|
22
22
|
var esModuleLexer = require('es-module-lexer');
|
|
23
23
|
var jsesc = require('jsesc');
|
|
24
24
|
var colors = require('picocolors');
|
|
25
|
-
var unpluginRsc = require('unplugin-rsc');
|
|
26
25
|
var findConfig = require('../config/findConfig.js');
|
|
27
26
|
var invariant = require('../invariant.js');
|
|
28
27
|
var nodeAdapter = require('./node-adapter.js');
|
|
@@ -119,16 +118,13 @@ let serverManifestId = vmod.id("server-manifest");
|
|
|
119
118
|
let browserManifestId = vmod.id("browser-manifest");
|
|
120
119
|
let hmrRuntimeId = vmod.id("hmr-runtime");
|
|
121
120
|
let injectHmrRuntimeId = vmod.id("inject-hmr-runtime");
|
|
122
|
-
let reactServerBuildId = vmod.id("react-server-build");
|
|
123
|
-
let clientReferencesId = vmod.id("client-references");
|
|
124
|
-
let serverReferencesId = vmod.id("server-references");
|
|
125
121
|
const resolveRelativeRouteFilePath = (route, reactRouterConfig) => {
|
|
126
122
|
let vite = importViteEsmSync.importViteEsmSync();
|
|
127
123
|
let file = route.file;
|
|
128
124
|
let fullPath = path__namespace.resolve(reactRouterConfig.appDirectory, file);
|
|
129
125
|
return vite.normalizePath(fullPath);
|
|
130
126
|
};
|
|
131
|
-
let vmods = [serverBuildId, serverManifestId, browserManifestId
|
|
127
|
+
let vmods = [serverBuildId, serverManifestId, browserManifestId];
|
|
132
128
|
const invalidateVirtualModules = viteDevServer => {
|
|
133
129
|
vmods.forEach(vmod$1 => {
|
|
134
130
|
let mod = viteDevServer.moduleGraph.getModuleById(vmod.resolve(vmod$1));
|
|
@@ -237,7 +233,6 @@ const getServerBundleBuildConfig = viteUserConfig => {
|
|
|
237
233
|
return viteUserConfig.__reactRouterServerBundleBuildConfig;
|
|
238
234
|
};
|
|
239
235
|
let getServerBuildDirectory = ctx => path__namespace.join(ctx.reactRouterConfig.buildDirectory, "server", ...(ctx.serverBundleBuildConfig ? [ctx.serverBundleBuildConfig.serverBundleId] : []));
|
|
240
|
-
let getReactServerBuildDirectory = reactRouterConfig => path__namespace.join(reactRouterConfig.buildDirectory, "react-server");
|
|
241
236
|
let getClientBuildDirectory = reactRouterConfig => path__namespace.join(reactRouterConfig.buildDirectory, "client");
|
|
242
237
|
let defaultEntriesDir = path__namespace.resolve(__dirname, "..", "config", "defaults");
|
|
243
238
|
let defaultEntries = fse__namespace.readdirSync(defaultEntriesDir).map(filename => path__namespace.join(defaultEntriesDir, filename));
|
|
@@ -285,7 +280,6 @@ const reactRouterVitePlugin = _config => {
|
|
|
285
280
|
});
|
|
286
281
|
let {
|
|
287
282
|
entryClientFilePath,
|
|
288
|
-
entryReactServerFilePath,
|
|
289
283
|
entryServerFilePath
|
|
290
284
|
} = await config.resolveEntryFiles({
|
|
291
285
|
rootDirectory,
|
|
@@ -303,7 +297,6 @@ const reactRouterVitePlugin = _config => {
|
|
|
303
297
|
reactRouterConfig,
|
|
304
298
|
rootDirectory,
|
|
305
299
|
entryClientFilePath,
|
|
306
|
-
entryReactServerFilePath,
|
|
307
300
|
entryServerFilePath,
|
|
308
301
|
viteManifestEnabled,
|
|
309
302
|
...ssrBuildCtx
|
|
@@ -321,7 +314,7 @@ const reactRouterVitePlugin = _config => {
|
|
|
321
314
|
ctx.serverBundleBuildConfig.routes :
|
|
322
315
|
// Otherwise, all routes are imported as usual
|
|
323
316
|
ctx.reactRouterConfig.routes;
|
|
324
|
-
|
|
317
|
+
return `
|
|
325
318
|
import * as entryServer from ${JSON.stringify(resolveFileUrl.resolveFileUrl(ctx, ctx.entryServerFilePath))};
|
|
326
319
|
${Object.keys(routes).map((key, index) => {
|
|
327
320
|
let route = routes[key];
|
|
@@ -347,61 +340,6 @@ const reactRouterVitePlugin = _config => {
|
|
|
347
340
|
}`;
|
|
348
341
|
}).join(",\n ")}
|
|
349
342
|
};`;
|
|
350
|
-
if (ctx.reactRouterConfig.future.unstable_serverComponents) {
|
|
351
|
-
code += `
|
|
352
|
-
export { default as clientReferences } from ${JSON.stringify(clientReferencesId)};`;
|
|
353
|
-
}
|
|
354
|
-
return code;
|
|
355
|
-
};
|
|
356
|
-
let {
|
|
357
|
-
clientModules,
|
|
358
|
-
serverModules
|
|
359
|
-
} = getReactServerOptions();
|
|
360
|
-
let getReactServerEntry = () => {
|
|
361
|
-
invariant["default"](viteConfig, "viteconfig required to generate the react-server entry");
|
|
362
|
-
invariant["default"](ctx.entryReactServerFilePath, "entryReactServerFilePath required to generate the react-server entry");
|
|
363
|
-
let routes = ctx.serverBundleBuildConfig ?
|
|
364
|
-
// For server bundle builds, the server build should only import the
|
|
365
|
-
// routes for this bundle rather than importing all routes
|
|
366
|
-
ctx.serverBundleBuildConfig.routes :
|
|
367
|
-
// Otherwise, all routes are imported as usual
|
|
368
|
-
ctx.reactRouterConfig.routes;
|
|
369
|
-
return `
|
|
370
|
-
import * as entryServer from ${JSON.stringify(resolveFileUrl.resolveFileUrl(ctx, ctx.entryReactServerFilePath))};
|
|
371
|
-
${Object.keys(routes).map((key, index) => {
|
|
372
|
-
let route = routes[key];
|
|
373
|
-
return `import * as route${index} from ${JSON.stringify(resolveFileUrl.resolveFileUrl(ctx, resolveRelativeRouteFilePath(route, ctx.reactRouterConfig)))};`;
|
|
374
|
-
}).join("\n")}
|
|
375
|
-
export const future = ${JSON.stringify(ctx.reactRouterConfig.future)};
|
|
376
|
-
export const basename = ${JSON.stringify(ctx.reactRouterConfig.basename)};
|
|
377
|
-
export const entry = { module: entryServer };
|
|
378
|
-
export const routes = {
|
|
379
|
-
${Object.keys(routes).map((key, index) => {
|
|
380
|
-
let route = routes[key];
|
|
381
|
-
return `${JSON.stringify(key)}: {
|
|
382
|
-
id: ${JSON.stringify(route.id)},
|
|
383
|
-
parentId: ${JSON.stringify(route.parentId)},
|
|
384
|
-
path: ${JSON.stringify(route.path)},
|
|
385
|
-
index: ${JSON.stringify(route.index)},
|
|
386
|
-
caseSensitive: ${JSON.stringify(route.caseSensitive)},
|
|
387
|
-
module: route${index}
|
|
388
|
-
}`;
|
|
389
|
-
}).join(",\n ")}
|
|
390
|
-
};`;
|
|
391
|
-
};
|
|
392
|
-
let getClientReferencesEntry = () => {
|
|
393
|
-
let result = "export default {";
|
|
394
|
-
for (let clientModule of clientModules) {
|
|
395
|
-
result += `${JSON.stringify(prodHash(clientModule))}: () => import(${JSON.stringify(clientModule)}),`;
|
|
396
|
-
}
|
|
397
|
-
return `${result}};`;
|
|
398
|
-
};
|
|
399
|
-
let getServerReferencesEntry = () => {
|
|
400
|
-
let result = "export default {";
|
|
401
|
-
for (let serverModule of serverModules) {
|
|
402
|
-
result += `${JSON.stringify(prodHash(serverModule))}: () => import(${JSON.stringify(serverModule)}),`;
|
|
403
|
-
}
|
|
404
|
-
return `${result}\};`;
|
|
405
343
|
};
|
|
406
344
|
let loadViteManifest = async directory => {
|
|
407
345
|
let manifestContents = await fse__namespace.readFile(path__namespace.resolve(directory, ".vite", "manifest.json"), "utf-8");
|
|
@@ -600,9 +538,9 @@ const reactRouterVitePlugin = _config => {
|
|
|
600
538
|
rollupOptions: {
|
|
601
539
|
...baseRollupOptions,
|
|
602
540
|
preserveEntrySignatures: "exports-only",
|
|
603
|
-
input: [ctx.entryClientFilePath, ...Object.values(ctx.reactRouterConfig.routes).map(route => `${path__namespace.resolve(ctx.reactRouterConfig.appDirectory, route.file)}${BUILD_CLIENT_ROUTE_QUERY_STRING}`)
|
|
541
|
+
input: [ctx.entryClientFilePath, ...Object.values(ctx.reactRouterConfig.routes).map(route => `${path__namespace.resolve(ctx.reactRouterConfig.appDirectory, route.file)}${BUILD_CLIENT_ROUTE_QUERY_STRING}`)]
|
|
604
542
|
}
|
|
605
|
-
} :
|
|
543
|
+
} : {
|
|
606
544
|
// We move SSR-only assets to client assets. Note that the
|
|
607
545
|
// SSR build can also emit code-split JS files (e.g. by
|
|
608
546
|
// dynamic import) under the same assets directory
|
|
@@ -623,28 +561,6 @@ const reactRouterVitePlugin = _config => {
|
|
|
623
561
|
format: ctx.reactRouterConfig.serverModuleFormat
|
|
624
562
|
}
|
|
625
563
|
}
|
|
626
|
-
} : {
|
|
627
|
-
// We move SSR-only assets to client assets. Note that the
|
|
628
|
-
// SSR build can also emit code-split JS files (e.g. by
|
|
629
|
-
// dynamic import) under the same assets directory
|
|
630
|
-
// regardless of "ssrEmitAssets" option, so we also need to
|
|
631
|
-
// keep these JS files have to be kept as-is.
|
|
632
|
-
ssrEmitAssets: true,
|
|
633
|
-
copyPublicDir: false,
|
|
634
|
-
// Assets in the public directory are only used by the client
|
|
635
|
-
manifest: true,
|
|
636
|
-
// We need the manifest to detect SSR-only assets
|
|
637
|
-
outDir: getReactServerBuildDirectory(ctx.reactRouterConfig),
|
|
638
|
-
rollupOptions: {
|
|
639
|
-
...baseRollupOptions,
|
|
640
|
-
preserveEntrySignatures: "exports-only",
|
|
641
|
-
// TODO: Add server references (serverModules) to input
|
|
642
|
-
input: reactServerBuildId,
|
|
643
|
-
output: {
|
|
644
|
-
entryFileNames: ctx.reactRouterConfig.serverBuildFile,
|
|
645
|
-
format: ctx.reactRouterConfig.serverModuleFormat
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
564
|
})
|
|
649
565
|
}
|
|
650
566
|
} : undefined),
|
|
@@ -798,7 +714,7 @@ const reactRouterVitePlugin = _config => {
|
|
|
798
714
|
// After the SSR build is finished, we inspect the Vite manifest for
|
|
799
715
|
// the SSR build and move server-only assets to client assets directory
|
|
800
716
|
async handler() {
|
|
801
|
-
if (!ctx.isSsrBuild
|
|
717
|
+
if (!ctx.isSsrBuild) {
|
|
802
718
|
return;
|
|
803
719
|
}
|
|
804
720
|
invariant["default"](viteConfig);
|
|
@@ -882,18 +798,6 @@ const reactRouterVitePlugin = _config => {
|
|
|
882
798
|
});
|
|
883
799
|
return `window.__remixManifest=${reactRouterManifestString};`;
|
|
884
800
|
}
|
|
885
|
-
case vmod.resolve(reactServerBuildId):
|
|
886
|
-
{
|
|
887
|
-
return getReactServerEntry();
|
|
888
|
-
}
|
|
889
|
-
case vmod.resolve(clientReferencesId):
|
|
890
|
-
{
|
|
891
|
-
return getClientReferencesEntry();
|
|
892
|
-
}
|
|
893
|
-
case vmod.resolve(serverReferencesId):
|
|
894
|
-
{
|
|
895
|
-
return getServerReferencesEntry();
|
|
896
|
-
}
|
|
897
801
|
}
|
|
898
802
|
}
|
|
899
803
|
}, {
|
|
@@ -949,20 +853,9 @@ const reactRouterVitePlugin = _config => {
|
|
|
949
853
|
}, {
|
|
950
854
|
name: "react-router-route-exports",
|
|
951
855
|
async transform(code, id, options) {
|
|
952
|
-
|
|
953
|
-
if (options !== null && options !== void 0 && options.ssr && !((_ctx = ctx) !== null && _ctx !== void 0 && _ctx.reactRouterConfig.future.unstable_serverComponents)) {
|
|
954
|
-
return;
|
|
955
|
-
}
|
|
856
|
+
if (options !== null && options !== void 0 && options.ssr) return;
|
|
956
857
|
let route = getRoute(ctx.reactRouterConfig, id);
|
|
957
858
|
if (!route) return;
|
|
958
|
-
let [filepath] = id.split("?");
|
|
959
|
-
if (ctx.reactRouterConfig.future.unstable_serverComponents && process.env.REACT_SERVER_BUILD) {
|
|
960
|
-
return removeExports.removeExports(code, CLIENT_ROUTE_EXPORTS, {
|
|
961
|
-
sourceMaps: true,
|
|
962
|
-
filename: id,
|
|
963
|
-
sourceFileName: filepath
|
|
964
|
-
});
|
|
965
|
-
}
|
|
966
859
|
if (!ctx.reactRouterConfig.ssr) {
|
|
967
860
|
let serverOnlyExports = esModuleLexer.parse(code)[1].map(exp => exp.n).filter(exp => SERVER_ONLY_ROUTE_EXPORTS.includes(exp));
|
|
968
861
|
if (serverOnlyExports.length > 0) {
|
|
@@ -978,6 +871,7 @@ const reactRouterVitePlugin = _config => {
|
|
|
978
871
|
}
|
|
979
872
|
}
|
|
980
873
|
}
|
|
874
|
+
let [filepath] = id.split("?");
|
|
981
875
|
return removeExports.removeExports(code, SERVER_ONLY_ROUTE_EXPORTS, {
|
|
982
876
|
sourceMaps: true,
|
|
983
877
|
filename: id,
|
|
@@ -1073,88 +967,6 @@ const reactRouterVitePlugin = _config => {
|
|
|
1073
967
|
});
|
|
1074
968
|
return modules;
|
|
1075
969
|
}
|
|
1076
|
-
}, {
|
|
1077
|
-
name: "remix:react-server",
|
|
1078
|
-
config() {
|
|
1079
|
-
const env = process.env.REACT_SERVER_BUILD ? "server" : "client";
|
|
1080
|
-
switch (env) {
|
|
1081
|
-
case "client":
|
|
1082
|
-
return {
|
|
1083
|
-
optimizeDeps: {
|
|
1084
|
-
include: ["react", "react/jsx-runtime", "react/jsx-dev-runtime", "react-server-dom-diy/client"]
|
|
1085
|
-
}
|
|
1086
|
-
};
|
|
1087
|
-
case "server":
|
|
1088
|
-
return {
|
|
1089
|
-
optimizeDeps: {
|
|
1090
|
-
include: ["react", "react/jsx-runtime", "react/jsx-dev-runtime", "react-server-dom-diy/server"]
|
|
1091
|
-
},
|
|
1092
|
-
resolve: {
|
|
1093
|
-
conditions: ["react-server"]
|
|
1094
|
-
},
|
|
1095
|
-
ssr: {
|
|
1096
|
-
noExternal: ["react", "react/jsx-runtime", "react/jsx-dev-runtime", "react-server-dom-diy/server"],
|
|
1097
|
-
optimizeDeps: {
|
|
1098
|
-
include: ["react", "react/jsx-runtime", "react/jsx-dev-runtime", "react-server-dom-diy/server"]
|
|
1099
|
-
},
|
|
1100
|
-
resolve: {
|
|
1101
|
-
conditions: ["react-server"],
|
|
1102
|
-
externalConditions: ["react-server"]
|
|
1103
|
-
}
|
|
1104
|
-
}
|
|
1105
|
-
};
|
|
1106
|
-
}
|
|
1107
|
-
},
|
|
1108
|
-
configResolved(resolvedViteConfig) {
|
|
1109
|
-
viteConfig = resolvedViteConfig;
|
|
1110
|
-
invariant["default"](viteConfig);
|
|
1111
|
-
},
|
|
1112
|
-
transform(...args) {
|
|
1113
|
-
invariant["default"](viteConfig);
|
|
1114
|
-
const env = process.env.REACT_SERVER_BUILD ? "server" : "client";
|
|
1115
|
-
let hash = viteConfig.mode !== "production" ? devHash : prodHash;
|
|
1116
|
-
switch (env) {
|
|
1117
|
-
case "client":
|
|
1118
|
-
return unpluginRsc.rscClientPlugin.vite({
|
|
1119
|
-
include: ["**/*"],
|
|
1120
|
-
transformModuleId: hash,
|
|
1121
|
-
useServerRuntime: {
|
|
1122
|
-
function: "createServerReference",
|
|
1123
|
-
module: "@react-router/dev/dist/runtime.client.js"
|
|
1124
|
-
},
|
|
1125
|
-
onModuleFound(id, type) {
|
|
1126
|
-
switch (type) {
|
|
1127
|
-
case "use server":
|
|
1128
|
-
serverModules.add(id);
|
|
1129
|
-
break;
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
|
-
}).transform.call(this, ...args);
|
|
1133
|
-
case "server":
|
|
1134
|
-
return unpluginRsc.rscServerPlugin.vite({
|
|
1135
|
-
include: ["**/*"],
|
|
1136
|
-
transformModuleId: hash,
|
|
1137
|
-
useClientRuntime: {
|
|
1138
|
-
function: "registerClientReference",
|
|
1139
|
-
module: "react-server-dom-diy/server"
|
|
1140
|
-
},
|
|
1141
|
-
useServerRuntime: {
|
|
1142
|
-
function: "registerServerReference",
|
|
1143
|
-
module: "react-server-dom-diy/server"
|
|
1144
|
-
},
|
|
1145
|
-
onModuleFound(id, type) {
|
|
1146
|
-
switch (type) {
|
|
1147
|
-
case "use client":
|
|
1148
|
-
clientModules.add(id);
|
|
1149
|
-
break;
|
|
1150
|
-
case "use server":
|
|
1151
|
-
serverModules.add(id);
|
|
1152
|
-
break;
|
|
1153
|
-
}
|
|
1154
|
-
}
|
|
1155
|
-
}).transform.call(this, ...args);
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1158
970
|
}];
|
|
1159
971
|
};
|
|
1160
972
|
function isInReactRouterMonorepo() {
|
|
@@ -1353,31 +1165,8 @@ function createPrerenderRoutes(manifest, parentId = "", routesByParentId = group
|
|
|
1353
1165
|
};
|
|
1354
1166
|
});
|
|
1355
1167
|
}
|
|
1356
|
-
function prodHash(str, _) {
|
|
1357
|
-
return `/${path__namespace.relative(process.cwd(), str)}`;
|
|
1358
|
-
}
|
|
1359
|
-
function devHash(str, _) {
|
|
1360
|
-
const resolved = path__namespace.resolve(str);
|
|
1361
|
-
let unixPath = resolved.replace(/\\/g, "/");
|
|
1362
|
-
if (!unixPath.startsWith("/")) {
|
|
1363
|
-
unixPath = `/${unixPath}`;
|
|
1364
|
-
}
|
|
1365
|
-
if (resolved.startsWith(process.cwd())) {
|
|
1366
|
-
return `/${path__namespace.relative(process.cwd(), unixPath)}`;
|
|
1367
|
-
}
|
|
1368
|
-
return `/@fs${unixPath}`;
|
|
1369
|
-
}
|
|
1370
|
-
global.__clientModules = global.__clientModules || new Set();
|
|
1371
|
-
global.__serverModules = global.__serverModules || new Set();
|
|
1372
|
-
function getReactServerOptions() {
|
|
1373
|
-
return {
|
|
1374
|
-
clientModules: global.__clientModules,
|
|
1375
|
-
serverModules: global.__serverModules
|
|
1376
|
-
};
|
|
1377
|
-
}
|
|
1378
1168
|
|
|
1379
1169
|
exports.extractPluginContext = extractPluginContext;
|
|
1380
|
-
exports.getReactServerOptions = getReactServerOptions;
|
|
1381
1170
|
exports.getServerBuildDirectory = getServerBuildDirectory;
|
|
1382
1171
|
exports.loadPluginContext = loadPluginContext;
|
|
1383
1172
|
exports.reactRouterVitePlugin = reactRouterVitePlugin;
|
package/dist/vite/profiler.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
import type { GeneratorOptions } from "@babel/generator";
|
|
2
|
-
export declare const removeExports: (source: string, exportsToRemove: string[], generateOptions?: GeneratorOptions) => import("@babel/generator").GeneratorResult
|
|
3
|
-
code: string;
|
|
4
|
-
};
|
|
2
|
+
export declare const removeExports: (source: string, exportsToRemove: string[], generateOptions?: GeneratorOptions) => import("@babel/generator").GeneratorResult;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-13d6d438f
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -179,20 +179,6 @@ const removeExports = (source, exportsToRemove, generateOptions = {}) => {
|
|
|
179
179
|
if (shouldRemove) {
|
|
180
180
|
path.remove();
|
|
181
181
|
}
|
|
182
|
-
},
|
|
183
|
-
ExportDefaultDeclaration(path) {
|
|
184
|
-
if (exportsToRemove.includes("default")) {
|
|
185
|
-
removedExports.add("default");
|
|
186
|
-
path.remove();
|
|
187
|
-
return false;
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
|
-
ExportDefaultSpecifier(path) {
|
|
191
|
-
if (exportsToRemove.includes("default")) {
|
|
192
|
-
removedExports.add("default");
|
|
193
|
-
path.remove();
|
|
194
|
-
return false;
|
|
195
|
-
}
|
|
196
182
|
}
|
|
197
183
|
});
|
|
198
184
|
if (removedExports.size === 0) {
|
|
@@ -286,9 +272,7 @@ const removeExports = (source, exportsToRemove, generateOptions = {}) => {
|
|
|
286
272
|
ImportNamespaceSpecifier: sweepImport
|
|
287
273
|
});
|
|
288
274
|
} while (referencesRemovedInThisPass);
|
|
289
|
-
return
|
|
290
|
-
code: babel.generate(document, generateOptions).code + `\n${[...removedExports].map(exp => exp === "default" ? "export default 1;" : `export const ${exp} = 1;`).join("\n")}`
|
|
291
|
-
};
|
|
275
|
+
return babel.generate(document, generateOptions);
|
|
292
276
|
};
|
|
293
277
|
|
|
294
278
|
exports.removeExports = removeExports;
|
package/dist/vite/styles.js
CHANGED
package/dist/vite/vmod.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-router/dev",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-13d6d438f",
|
|
4
4
|
"description": "Dev tools and CLI for React Router",
|
|
5
5
|
"homepage": "https://reactrouter.com",
|
|
6
6
|
"bugs": {
|
|
@@ -42,10 +42,9 @@
|
|
|
42
42
|
"react-refresh": "^0.14.0",
|
|
43
43
|
"semver": "^7.3.7",
|
|
44
44
|
"set-cookie-parser": "^2.6.0",
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"@react-router/server-runtime": "0.0.0-experimental-
|
|
48
|
-
"react-router": "0.0.0-experimental-e16afd9b7"
|
|
45
|
+
"@react-router/node": "0.0.0-experimental-13d6d438f",
|
|
46
|
+
"react-router": "0.0.0-experimental-13d6d438f",
|
|
47
|
+
"@react-router/server-runtime": "0.0.0-experimental-13d6d438f"
|
|
49
48
|
},
|
|
50
49
|
"devDependencies": {
|
|
51
50
|
"@types/babel__core": "^7.20.5",
|
|
@@ -66,28 +65,23 @@
|
|
|
66
65
|
"express": "^4.17.1",
|
|
67
66
|
"esbuild-register": "^3.3.2",
|
|
68
67
|
"fast-glob": "3.2.11",
|
|
69
|
-
"react-server-dom-diy": "0.0.0-experimental-15a3a5622-202404158",
|
|
70
68
|
"strip-ansi": "^6.0.1",
|
|
71
69
|
"tiny-invariant": "^1.2.0",
|
|
72
70
|
"vite": "^5.1.0",
|
|
73
71
|
"wrangler": "^3.28.2",
|
|
74
|
-
"@react-router/serve": "0.0.0-experimental-
|
|
72
|
+
"@react-router/serve": "0.0.0-experimental-13d6d438f"
|
|
75
73
|
},
|
|
76
74
|
"peerDependencies": {
|
|
77
|
-
"react-server-dom-diy": "*",
|
|
78
75
|
"typescript": "^5.1.0",
|
|
79
76
|
"vite": "^5.1.0",
|
|
80
77
|
"wrangler": "^3.28.2",
|
|
81
|
-
"react-router": "^0.0.0-experimental-
|
|
82
|
-
"@react-router/serve": "^0.0.0-experimental-
|
|
78
|
+
"react-router": "^0.0.0-experimental-13d6d438f",
|
|
79
|
+
"@react-router/serve": "^0.0.0-experimental-13d6d438f"
|
|
83
80
|
},
|
|
84
81
|
"peerDependenciesMeta": {
|
|
85
82
|
"@react-router/serve": {
|
|
86
83
|
"optional": true
|
|
87
84
|
},
|
|
88
|
-
"react-server-dom-diy": {
|
|
89
|
-
"optional": true
|
|
90
|
-
},
|
|
91
85
|
"typescript": {
|
|
92
86
|
"optional": true
|
|
93
87
|
},
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { HydratedRouter } from "react-router";
|
|
2
|
-
import { startTransition, StrictMode } from "react";
|
|
3
|
-
import { hydrateRoot } from "react-dom/client";
|
|
4
|
-
// @ts-expect-error - no types
|
|
5
|
-
import ReactServerDOM from "react-server-dom-diy/client";
|
|
6
|
-
|
|
7
|
-
if (import.meta.env.PROD) {
|
|
8
|
-
window.__diy_client_manifest__ = {
|
|
9
|
-
_cache: new Map(),
|
|
10
|
-
resolveClientReference([id, exportName]) {
|
|
11
|
-
return {
|
|
12
|
-
preloadModule() {
|
|
13
|
-
if (window.__diy_client_manifest__._cache.has(id)) {
|
|
14
|
-
return window.__diy_client_manifest__._cache.get(id);
|
|
15
|
-
}
|
|
16
|
-
const promise = import("virtual:react-router/client-references")
|
|
17
|
-
.then(({ default: mods }) => mods[id]())
|
|
18
|
-
.then((mod) => {
|
|
19
|
-
promise.status = "fulfilled";
|
|
20
|
-
promise.value = mod;
|
|
21
|
-
})
|
|
22
|
-
.catch((res) => {
|
|
23
|
-
promise.status = "rejected";
|
|
24
|
-
promise.reason = res;
|
|
25
|
-
throw res;
|
|
26
|
-
});
|
|
27
|
-
promise.status = "pending";
|
|
28
|
-
window.__diy_client_manifest__._cache.set(id, promise);
|
|
29
|
-
return promise;
|
|
30
|
-
},
|
|
31
|
-
requireModule() {
|
|
32
|
-
const cached = window.__diy_client_manifest__._cache.get(id);
|
|
33
|
-
if (!cached) throw new Error(`Module ${id} not found`);
|
|
34
|
-
if (cached.reason) throw cached.reason;
|
|
35
|
-
return cached.value[exportName];
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
} else {
|
|
41
|
-
window.__diy_client_manifest__ = {
|
|
42
|
-
_cache: new Map(),
|
|
43
|
-
resolveClientReference([id, exportName]) {
|
|
44
|
-
return {
|
|
45
|
-
preloadModule() {
|
|
46
|
-
if (window.__diy_client_manifest__._cache.has(id)) {
|
|
47
|
-
return window.__diy_client_manifest__._cache.get(id);
|
|
48
|
-
}
|
|
49
|
-
const promise = import(id)
|
|
50
|
-
.then((mod) => {
|
|
51
|
-
promise.status = "fulfilled";
|
|
52
|
-
promise.value = mod;
|
|
53
|
-
})
|
|
54
|
-
.catch((res) => {
|
|
55
|
-
promise.status = "rejected";
|
|
56
|
-
promise.reason = res;
|
|
57
|
-
throw res;
|
|
58
|
-
});
|
|
59
|
-
promise.status = "pending";
|
|
60
|
-
window.__diy_client_manifest__._cache.set(id, promise);
|
|
61
|
-
return promise;
|
|
62
|
-
},
|
|
63
|
-
requireModule() {
|
|
64
|
-
const cached = window.__diy_client_manifest__._cache.get(id);
|
|
65
|
-
if (!cached) throw new Error(`Module ${id} not found`);
|
|
66
|
-
if (cached.reason) throw cached.reason;
|
|
67
|
-
return cached.value[exportName];
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
window.createFromReadableStream = function createFromReadableStream(
|
|
75
|
-
body: ReadableStream<Uint8Array>
|
|
76
|
-
) {
|
|
77
|
-
return ReactServerDOM.createFromReadableStream(
|
|
78
|
-
body,
|
|
79
|
-
window.__diy_client_manifest__
|
|
80
|
-
);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
startTransition(() => {
|
|
84
|
-
hydrateRoot(
|
|
85
|
-
document,
|
|
86
|
-
<StrictMode>
|
|
87
|
-
<HydratedRouter />
|
|
88
|
-
</StrictMode>
|
|
89
|
-
);
|
|
90
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as stream from "node:stream";
|
|
2
|
-
|
|
3
|
-
import { createReadableStreamFromReadable } from "@react-router/node";
|
|
4
|
-
// @ts-expect-error - no types
|
|
5
|
-
import ReactServerDOM from "react-server-dom-diy/server";
|
|
6
|
-
|
|
7
|
-
export function renderToReadableStream(data: unknown) {
|
|
8
|
-
const passthrough = new stream.PassThrough();
|
|
9
|
-
const { pipe } = ReactServerDOM.renderToPipeableStream(
|
|
10
|
-
data,
|
|
11
|
-
global.__diy_server_manifest__
|
|
12
|
-
);
|
|
13
|
-
pipe(passthrough);
|
|
14
|
-
return createReadableStreamFromReadable(passthrough);
|
|
15
|
-
}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { PassThrough, Readable } from "node:stream";
|
|
2
|
-
|
|
3
|
-
import type { AppLoadContext, EntryContext } from "@react-router/node";
|
|
4
|
-
import { createReadableStreamFromReadable } from "@react-router/node";
|
|
5
|
-
import { RemixServer } from "react-router";
|
|
6
|
-
import * as isbotModule from "isbot";
|
|
7
|
-
import { renderToPipeableStream } from "react-dom/server";
|
|
8
|
-
// @ts-expect-error - no types
|
|
9
|
-
import ReactServerDOM from "react-server-dom-diy/client";
|
|
10
|
-
|
|
11
|
-
const ABORT_DELAY = 5_000;
|
|
12
|
-
|
|
13
|
-
export function createFromReadableStream(body: ReadableStream<Uint8Array>) {
|
|
14
|
-
return ReactServerDOM.createFromNodeStream(
|
|
15
|
-
Readable.fromWeb(body as any),
|
|
16
|
-
global.__diy_client_manifest__
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export default function handleRequest(
|
|
21
|
-
request: Request,
|
|
22
|
-
responseStatusCode: number,
|
|
23
|
-
responseHeaders: Headers,
|
|
24
|
-
remixContext: EntryContext,
|
|
25
|
-
loadContext: AppLoadContext
|
|
26
|
-
) {
|
|
27
|
-
let prohibitOutOfOrderStreaming =
|
|
28
|
-
isBotRequest(request.headers.get("user-agent")) || remixContext.isSpaMode;
|
|
29
|
-
|
|
30
|
-
return prohibitOutOfOrderStreaming
|
|
31
|
-
? handleBotRequest(
|
|
32
|
-
request,
|
|
33
|
-
responseStatusCode,
|
|
34
|
-
responseHeaders,
|
|
35
|
-
remixContext
|
|
36
|
-
)
|
|
37
|
-
: handleBrowserRequest(
|
|
38
|
-
request,
|
|
39
|
-
responseStatusCode,
|
|
40
|
-
responseHeaders,
|
|
41
|
-
remixContext
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// We have some Remix apps in the wild already running with isbot@3 so we need
|
|
46
|
-
// to maintain backwards compatibility even though we want new apps to use
|
|
47
|
-
// isbot@4. That way, we can ship this as a minor Semver update to @react-router/dev.
|
|
48
|
-
function isBotRequest(userAgent: string | null) {
|
|
49
|
-
if (!userAgent) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// isbot >= 3.8.0, >4
|
|
54
|
-
if ("isbot" in isbotModule && typeof isbotModule.isbot === "function") {
|
|
55
|
-
return isbotModule.isbot(userAgent);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// isbot < 3.8.0
|
|
59
|
-
if ("default" in isbotModule && typeof isbotModule.default === "function") {
|
|
60
|
-
return isbotModule.default(userAgent);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function handleBotRequest(
|
|
67
|
-
request: Request,
|
|
68
|
-
responseStatusCode: number,
|
|
69
|
-
responseHeaders: Headers,
|
|
70
|
-
remixContext: EntryContext
|
|
71
|
-
) {
|
|
72
|
-
return new Promise((resolve, reject) => {
|
|
73
|
-
let shellRendered = false;
|
|
74
|
-
const { pipe, abort } = renderToPipeableStream(
|
|
75
|
-
<RemixServer
|
|
76
|
-
context={remixContext}
|
|
77
|
-
url={request.url}
|
|
78
|
-
abortDelay={ABORT_DELAY}
|
|
79
|
-
/>,
|
|
80
|
-
{
|
|
81
|
-
onAllReady() {
|
|
82
|
-
shellRendered = true;
|
|
83
|
-
const body = new PassThrough();
|
|
84
|
-
const stream = createReadableStreamFromReadable(body);
|
|
85
|
-
|
|
86
|
-
responseHeaders.set("Content-Type", "text/html");
|
|
87
|
-
|
|
88
|
-
resolve(
|
|
89
|
-
new Response(stream, {
|
|
90
|
-
headers: responseHeaders,
|
|
91
|
-
status: responseStatusCode,
|
|
92
|
-
})
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
pipe(body);
|
|
96
|
-
},
|
|
97
|
-
onShellError(error: unknown) {
|
|
98
|
-
reject(error);
|
|
99
|
-
},
|
|
100
|
-
onError(error: unknown) {
|
|
101
|
-
responseStatusCode = 500;
|
|
102
|
-
// Log streaming rendering errors from inside the shell. Don't log
|
|
103
|
-
// errors encountered during initial shell rendering since they'll
|
|
104
|
-
// reject and get logged in handleDocumentRequest.
|
|
105
|
-
if (shellRendered) {
|
|
106
|
-
console.error(error);
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
}
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
setTimeout(abort, ABORT_DELAY);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
function handleBrowserRequest(
|
|
117
|
-
request: Request,
|
|
118
|
-
responseStatusCode: number,
|
|
119
|
-
responseHeaders: Headers,
|
|
120
|
-
remixContext: EntryContext
|
|
121
|
-
) {
|
|
122
|
-
return new Promise((resolve, reject) => {
|
|
123
|
-
let shellRendered = false;
|
|
124
|
-
const { pipe, abort } = renderToPipeableStream(
|
|
125
|
-
<RemixServer
|
|
126
|
-
context={remixContext}
|
|
127
|
-
url={request.url}
|
|
128
|
-
abortDelay={ABORT_DELAY}
|
|
129
|
-
/>,
|
|
130
|
-
{
|
|
131
|
-
onShellReady() {
|
|
132
|
-
shellRendered = true;
|
|
133
|
-
const body = new PassThrough();
|
|
134
|
-
const stream = createReadableStreamFromReadable(body);
|
|
135
|
-
|
|
136
|
-
responseHeaders.set("Content-Type", "text/html");
|
|
137
|
-
|
|
138
|
-
resolve(
|
|
139
|
-
new Response(stream, {
|
|
140
|
-
headers: responseHeaders,
|
|
141
|
-
status: responseStatusCode,
|
|
142
|
-
})
|
|
143
|
-
);
|
|
144
|
-
|
|
145
|
-
pipe(body);
|
|
146
|
-
},
|
|
147
|
-
onShellError(error: unknown) {
|
|
148
|
-
reject(error);
|
|
149
|
-
},
|
|
150
|
-
onError(error: unknown) {
|
|
151
|
-
responseStatusCode = 500;
|
|
152
|
-
// Log streaming rendering errors from inside the shell. Don't log
|
|
153
|
-
// errors encountered during initial shell rendering since they'll
|
|
154
|
-
// reject and get logged in handleDocumentRequest.
|
|
155
|
-
if (shellRendered) {
|
|
156
|
-
console.error(error);
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
}
|
|
160
|
-
);
|
|
161
|
-
|
|
162
|
-
setTimeout(abort, ABORT_DELAY);
|
|
163
|
-
});
|
|
164
|
-
}
|
package/dist/runtime.client.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function createServerReference(_: unknown, mod: string, name: string): void;
|
package/dist/runtime.client.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-e16afd9b7
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) Remix Software Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
function createServerReference(_, mod, name) {
|
|
16
|
-
throw new Error("Server references are not yet implemented.");
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
exports.createServerReference = createServerReference;
|