@react-router/dev 0.0.0-experimental-667adc806 → 0.0.0-experimental-afe1c2609
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/CHANGELOG.md +0 -20
- package/dist/cli/index.js +25 -6
- package/dist/config.d.ts +14 -4
- package/dist/config.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/vite/cloudflare.js +15 -6
- package/dist/vite.js +231 -81
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,25 +1,5 @@
|
|
|
1
1
|
# `@react-router/dev`
|
|
2
2
|
|
|
3
|
-
## 7.9.2-pre.1
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Updated dependencies:
|
|
8
|
-
- `react-router@7.9.2-pre.1`
|
|
9
|
-
- `@react-router/node@7.9.2-pre.1`
|
|
10
|
-
- `@react-router/serve@7.9.2-pre.1`
|
|
11
|
-
|
|
12
|
-
## 7.9.2-pre.0
|
|
13
|
-
|
|
14
|
-
### Patch Changes
|
|
15
|
-
|
|
16
|
-
- Add unstable support for RSC Framework Mode ([#14336](https://github.com/remix-run/react-router/pull/14336))
|
|
17
|
-
- Switch internal vite plugin Response logic to use `@remix-run/node-fetch-server` ([#13927](https://github.com/remix-run/react-router/pull/13927))
|
|
18
|
-
- Updated dependencies:
|
|
19
|
-
- `react-router@7.9.2-pre.0`
|
|
20
|
-
- `@react-router/node@7.9.2-pre.0`
|
|
21
|
-
- `@react-router/serve@7.9.2-pre.0`
|
|
22
|
-
|
|
23
3
|
## 7.9.1
|
|
24
4
|
|
|
25
5
|
### Patch Changes
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* @react-router/dev v0.0.0-experimental-
|
|
3
|
+
* @react-router/dev v0.0.0-experimental-afe1c2609
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) Remix Software Inc.
|
|
6
6
|
*
|
|
@@ -390,11 +390,20 @@ async function resolveConfig({
|
|
|
390
390
|
if (!ssr && serverBundles) {
|
|
391
391
|
serverBundles = void 0;
|
|
392
392
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
393
|
+
if (prerender) {
|
|
394
|
+
let isValidPrerenderPathsConfig = (p) => typeof p === "boolean" || typeof p === "function" || Array.isArray(p);
|
|
395
|
+
let isValidPrerenderConfig = isValidPrerenderPathsConfig(prerender) || typeof prerender === "object" && "paths" in prerender && isValidPrerenderPathsConfig(prerender.paths);
|
|
396
|
+
if (!isValidPrerenderConfig) {
|
|
397
|
+
return err(
|
|
398
|
+
"The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
|
|
399
|
+
);
|
|
400
|
+
}
|
|
401
|
+
let isValidConcurrencyConfig = typeof prerender != "object" || !("unstable_concurrency" in prerender) || typeof prerender.unstable_concurrency === "number" && Number.isInteger(prerender.unstable_concurrency) && prerender.unstable_concurrency > 0;
|
|
402
|
+
if (!isValidConcurrencyConfig) {
|
|
403
|
+
return err(
|
|
404
|
+
"The `prerender.unstable_concurrency` config must be a positive integer if specified."
|
|
405
|
+
);
|
|
406
|
+
}
|
|
398
407
|
}
|
|
399
408
|
let routeDiscovery;
|
|
400
409
|
if (userRouteDiscovery == null) {
|
|
@@ -1511,6 +1520,15 @@ var init_warn_on_client_source_maps = __esm({
|
|
|
1511
1520
|
}
|
|
1512
1521
|
});
|
|
1513
1522
|
|
|
1523
|
+
// vite/pmap.js
|
|
1524
|
+
var pMapSkip;
|
|
1525
|
+
var init_pmap = __esm({
|
|
1526
|
+
"vite/pmap.js"() {
|
|
1527
|
+
"use strict";
|
|
1528
|
+
pMapSkip = Symbol("skip");
|
|
1529
|
+
}
|
|
1530
|
+
});
|
|
1531
|
+
|
|
1514
1532
|
// vite/plugin.ts
|
|
1515
1533
|
async function resolveViteConfig({
|
|
1516
1534
|
configFile,
|
|
@@ -1785,6 +1803,7 @@ var init_plugin = __esm({
|
|
|
1785
1803
|
init_load_dotenv();
|
|
1786
1804
|
init_validate_plugin_order();
|
|
1787
1805
|
init_warn_on_client_source_maps();
|
|
1806
|
+
init_pmap();
|
|
1788
1807
|
CLIENT_NON_COMPONENT_EXPORTS = [
|
|
1789
1808
|
"clientAction",
|
|
1790
1809
|
"clientLoader",
|
package/dist/config.d.ts
CHANGED
|
@@ -58,6 +58,9 @@ type BuildEndHook = (args: {
|
|
|
58
58
|
reactRouterConfig: ResolvedReactRouterConfig;
|
|
59
59
|
viteConfig: Vite.ResolvedConfig;
|
|
60
60
|
}) => void | Promise<void>;
|
|
61
|
+
type PrerenderPaths = boolean | Array<string> | ((args: {
|
|
62
|
+
getStaticPaths: () => string[];
|
|
63
|
+
}) => Array<string> | Promise<Array<string>>);
|
|
61
64
|
/**
|
|
62
65
|
* Config to be exported via the default export from `react-router.config.ts`.
|
|
63
66
|
*/
|
|
@@ -93,10 +96,17 @@ type ReactRouterConfig = {
|
|
|
93
96
|
/**
|
|
94
97
|
* An array of URLs to prerender to HTML files at build time. Can also be a
|
|
95
98
|
* function returning an array to dynamically generate URLs.
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
*
|
|
100
|
+
* `unstable_concurrency` defaults to 1, which means "no concurrency" - fully serial execution.
|
|
101
|
+
* Setting it to a value more than 1 enables concurrent prerendering.
|
|
102
|
+
* Setting it to a value higher than one can increase the speed of the build,
|
|
103
|
+
* but may consume more resources, and send more concurrent requests to the
|
|
104
|
+
* server/CMS.
|
|
105
|
+
*/
|
|
106
|
+
prerender?: PrerenderPaths | {
|
|
107
|
+
paths: PrerenderPaths;
|
|
108
|
+
unstable_concurrency?: number;
|
|
109
|
+
};
|
|
100
110
|
/**
|
|
101
111
|
* An array of React Router plugin config presets to ease integration with
|
|
102
112
|
* other platforms and tools.
|
package/dist/config.js
CHANGED
package/dist/routes.js
CHANGED
package/dist/vite/cloudflare.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-afe1c2609
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -420,11 +420,20 @@ async function resolveConfig({
|
|
|
420
420
|
if (!ssr && serverBundles) {
|
|
421
421
|
serverBundles = void 0;
|
|
422
422
|
}
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
423
|
+
if (prerender) {
|
|
424
|
+
let isValidPrerenderPathsConfig = (p) => typeof p === "boolean" || typeof p === "function" || Array.isArray(p);
|
|
425
|
+
let isValidPrerenderConfig = isValidPrerenderPathsConfig(prerender) || typeof prerender === "object" && "paths" in prerender && isValidPrerenderPathsConfig(prerender.paths);
|
|
426
|
+
if (!isValidPrerenderConfig) {
|
|
427
|
+
return err(
|
|
428
|
+
"The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
|
|
429
|
+
);
|
|
430
|
+
}
|
|
431
|
+
let isValidConcurrencyConfig = typeof prerender != "object" || !("unstable_concurrency" in prerender) || typeof prerender.unstable_concurrency === "number" && Number.isInteger(prerender.unstable_concurrency) && prerender.unstable_concurrency > 0;
|
|
432
|
+
if (!isValidConcurrencyConfig) {
|
|
433
|
+
return err(
|
|
434
|
+
"The `prerender.unstable_concurrency` config must be a positive integer if specified."
|
|
435
|
+
);
|
|
436
|
+
}
|
|
428
437
|
}
|
|
429
438
|
let routeDiscovery;
|
|
430
439
|
if (userRouteDiscovery == null) {
|
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-afe1c2609
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -447,11 +447,20 @@ async function resolveConfig({
|
|
|
447
447
|
if (!ssr && serverBundles) {
|
|
448
448
|
serverBundles = void 0;
|
|
449
449
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
450
|
+
if (prerender) {
|
|
451
|
+
let isValidPrerenderPathsConfig = (p) => typeof p === "boolean" || typeof p === "function" || Array.isArray(p);
|
|
452
|
+
let isValidPrerenderConfig = isValidPrerenderPathsConfig(prerender) || typeof prerender === "object" && "paths" in prerender && isValidPrerenderPathsConfig(prerender.paths);
|
|
453
|
+
if (!isValidPrerenderConfig) {
|
|
454
|
+
return err(
|
|
455
|
+
"The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
|
|
456
|
+
);
|
|
457
|
+
}
|
|
458
|
+
let isValidConcurrencyConfig = typeof prerender != "object" || !("unstable_concurrency" in prerender) || typeof prerender.unstable_concurrency === "number" && Number.isInteger(prerender.unstable_concurrency) && prerender.unstable_concurrency > 0;
|
|
459
|
+
if (!isValidConcurrencyConfig) {
|
|
460
|
+
return err(
|
|
461
|
+
"The `prerender.unstable_concurrency` config must be a positive integer if specified."
|
|
462
|
+
);
|
|
463
|
+
}
|
|
455
464
|
}
|
|
456
465
|
let routeDiscovery;
|
|
457
466
|
if (userRouteDiscovery == null) {
|
|
@@ -2412,6 +2421,129 @@ function warnOnClientSourceMaps() {
|
|
|
2412
2421
|
};
|
|
2413
2422
|
}
|
|
2414
2423
|
|
|
2424
|
+
// vite/pmap.js
|
|
2425
|
+
async function pMap(iterable, mapper, {
|
|
2426
|
+
concurrency = Number.POSITIVE_INFINITY,
|
|
2427
|
+
stopOnError = true,
|
|
2428
|
+
signal
|
|
2429
|
+
} = {}) {
|
|
2430
|
+
return new Promise((resolve_, reject_) => {
|
|
2431
|
+
if (iterable[Symbol.iterator] === void 0 && iterable[Symbol.asyncIterator] === void 0) {
|
|
2432
|
+
throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`);
|
|
2433
|
+
}
|
|
2434
|
+
if (typeof mapper !== "function") {
|
|
2435
|
+
throw new TypeError("Mapper function is required");
|
|
2436
|
+
}
|
|
2437
|
+
if (!(Number.isSafeInteger(concurrency) && concurrency >= 1 || concurrency === Number.POSITIVE_INFINITY)) {
|
|
2438
|
+
throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`);
|
|
2439
|
+
}
|
|
2440
|
+
const result = [];
|
|
2441
|
+
const errors = [];
|
|
2442
|
+
const skippedIndexesMap = /* @__PURE__ */ new Map();
|
|
2443
|
+
let isRejected = false;
|
|
2444
|
+
let isResolved = false;
|
|
2445
|
+
let isIterableDone = false;
|
|
2446
|
+
let resolvingCount = 0;
|
|
2447
|
+
let currentIndex = 0;
|
|
2448
|
+
const iterator = iterable[Symbol.iterator] === void 0 ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();
|
|
2449
|
+
const signalListener = () => {
|
|
2450
|
+
reject(signal.reason);
|
|
2451
|
+
};
|
|
2452
|
+
const cleanup = () => {
|
|
2453
|
+
signal?.removeEventListener("abort", signalListener);
|
|
2454
|
+
};
|
|
2455
|
+
const resolve6 = (value) => {
|
|
2456
|
+
resolve_(value);
|
|
2457
|
+
cleanup();
|
|
2458
|
+
};
|
|
2459
|
+
const reject = (reason) => {
|
|
2460
|
+
isRejected = true;
|
|
2461
|
+
isResolved = true;
|
|
2462
|
+
reject_(reason);
|
|
2463
|
+
cleanup();
|
|
2464
|
+
};
|
|
2465
|
+
if (signal) {
|
|
2466
|
+
if (signal.aborted) {
|
|
2467
|
+
reject(signal.reason);
|
|
2468
|
+
}
|
|
2469
|
+
signal.addEventListener("abort", signalListener, { once: true });
|
|
2470
|
+
}
|
|
2471
|
+
const next = async () => {
|
|
2472
|
+
if (isResolved) {
|
|
2473
|
+
return;
|
|
2474
|
+
}
|
|
2475
|
+
const nextItem = await iterator.next();
|
|
2476
|
+
const index = currentIndex;
|
|
2477
|
+
currentIndex++;
|
|
2478
|
+
if (nextItem.done) {
|
|
2479
|
+
isIterableDone = true;
|
|
2480
|
+
if (resolvingCount === 0 && !isResolved) {
|
|
2481
|
+
if (!stopOnError && errors.length > 0) {
|
|
2482
|
+
reject(new AggregateError(errors));
|
|
2483
|
+
return;
|
|
2484
|
+
}
|
|
2485
|
+
isResolved = true;
|
|
2486
|
+
if (skippedIndexesMap.size === 0) {
|
|
2487
|
+
resolve6(result);
|
|
2488
|
+
return;
|
|
2489
|
+
}
|
|
2490
|
+
const pureResult = [];
|
|
2491
|
+
for (const [index2, value] of result.entries()) {
|
|
2492
|
+
if (skippedIndexesMap.get(index2) === pMapSkip) {
|
|
2493
|
+
continue;
|
|
2494
|
+
}
|
|
2495
|
+
pureResult.push(value);
|
|
2496
|
+
}
|
|
2497
|
+
resolve6(pureResult);
|
|
2498
|
+
}
|
|
2499
|
+
return;
|
|
2500
|
+
}
|
|
2501
|
+
resolvingCount++;
|
|
2502
|
+
(async () => {
|
|
2503
|
+
try {
|
|
2504
|
+
const element = await nextItem.value;
|
|
2505
|
+
if (isResolved) {
|
|
2506
|
+
return;
|
|
2507
|
+
}
|
|
2508
|
+
const value = await mapper(element, index);
|
|
2509
|
+
if (value === pMapSkip) {
|
|
2510
|
+
skippedIndexesMap.set(index, value);
|
|
2511
|
+
}
|
|
2512
|
+
result[index] = value;
|
|
2513
|
+
resolvingCount--;
|
|
2514
|
+
await next();
|
|
2515
|
+
} catch (error) {
|
|
2516
|
+
if (stopOnError) {
|
|
2517
|
+
reject(error);
|
|
2518
|
+
} else {
|
|
2519
|
+
errors.push(error);
|
|
2520
|
+
resolvingCount--;
|
|
2521
|
+
try {
|
|
2522
|
+
await next();
|
|
2523
|
+
} catch (error2) {
|
|
2524
|
+
reject(error2);
|
|
2525
|
+
}
|
|
2526
|
+
}
|
|
2527
|
+
}
|
|
2528
|
+
})();
|
|
2529
|
+
};
|
|
2530
|
+
(async () => {
|
|
2531
|
+
for (let index = 0; index < concurrency; index++) {
|
|
2532
|
+
try {
|
|
2533
|
+
await next();
|
|
2534
|
+
} catch (error) {
|
|
2535
|
+
reject(error);
|
|
2536
|
+
break;
|
|
2537
|
+
}
|
|
2538
|
+
if (isIterableDone || isRejected) {
|
|
2539
|
+
break;
|
|
2540
|
+
}
|
|
2541
|
+
}
|
|
2542
|
+
})();
|
|
2543
|
+
});
|
|
2544
|
+
}
|
|
2545
|
+
var pMapSkip = Symbol("skip");
|
|
2546
|
+
|
|
2415
2547
|
// vite/plugin.ts
|
|
2416
2548
|
function extractPluginContext(viteConfig) {
|
|
2417
2549
|
return viteConfig["__reactRouterPluginContext"];
|
|
@@ -4179,67 +4311,76 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
4179
4311
|
}
|
|
4180
4312
|
}
|
|
4181
4313
|
let buildRoutes = createPrerenderRoutes(build.routes);
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
|
|
4186
|
-
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
|
|
4190
|
-
|
|
4191
|
-
|
|
4192
|
-
|
|
4193
|
-
|
|
4194
|
-
|
|
4195
|
-
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4203
|
-
|
|
4204
|
-
|
|
4205
|
-
|
|
4206
|
-
|
|
4207
|
-
|
|
4208
|
-
|
|
4314
|
+
await pMap(
|
|
4315
|
+
build.prerender,
|
|
4316
|
+
async (path9) => {
|
|
4317
|
+
let matches = (0, import_react_router2.matchRoutes)(
|
|
4318
|
+
buildRoutes,
|
|
4319
|
+
`/${path9}/`.replace(/^\/\/+/, "/")
|
|
4320
|
+
);
|
|
4321
|
+
if (!matches) {
|
|
4322
|
+
return;
|
|
4323
|
+
}
|
|
4324
|
+
let leafRoute = matches ? matches[matches.length - 1].route : null;
|
|
4325
|
+
let manifestRoute = leafRoute ? build.routes[leafRoute.id]?.module : null;
|
|
4326
|
+
let isResourceRoute = manifestRoute && !manifestRoute.default && !manifestRoute.ErrorBoundary;
|
|
4327
|
+
if (isResourceRoute) {
|
|
4328
|
+
invariant(leafRoute);
|
|
4329
|
+
invariant(manifestRoute);
|
|
4330
|
+
if (manifestRoute.loader) {
|
|
4331
|
+
await prerenderData(
|
|
4332
|
+
handler,
|
|
4333
|
+
path9,
|
|
4334
|
+
[leafRoute.id],
|
|
4335
|
+
clientBuildDirectory,
|
|
4336
|
+
reactRouterConfig,
|
|
4337
|
+
viteConfig
|
|
4338
|
+
);
|
|
4339
|
+
await prerenderResourceRoute(
|
|
4340
|
+
handler,
|
|
4341
|
+
path9,
|
|
4342
|
+
clientBuildDirectory,
|
|
4343
|
+
reactRouterConfig,
|
|
4344
|
+
viteConfig
|
|
4345
|
+
);
|
|
4346
|
+
} else {
|
|
4347
|
+
viteConfig.logger.warn(
|
|
4348
|
+
`\u26A0\uFE0F Skipping prerendering for resource route without a loader: ${leafRoute?.id}`
|
|
4349
|
+
);
|
|
4350
|
+
}
|
|
4209
4351
|
} else {
|
|
4210
|
-
|
|
4211
|
-
|
|
4352
|
+
let hasLoaders = matches.some(
|
|
4353
|
+
(m) => build.assets.routes[m.route.id]?.hasLoader
|
|
4212
4354
|
);
|
|
4213
|
-
|
|
4214
|
-
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
|
|
4355
|
+
let data;
|
|
4356
|
+
if (!isResourceRoute && hasLoaders) {
|
|
4357
|
+
data = await prerenderData(
|
|
4358
|
+
handler,
|
|
4359
|
+
path9,
|
|
4360
|
+
null,
|
|
4361
|
+
clientBuildDirectory,
|
|
4362
|
+
reactRouterConfig,
|
|
4363
|
+
viteConfig
|
|
4364
|
+
);
|
|
4365
|
+
}
|
|
4366
|
+
await prerenderRoute(
|
|
4221
4367
|
handler,
|
|
4222
4368
|
path9,
|
|
4223
|
-
null,
|
|
4224
4369
|
clientBuildDirectory,
|
|
4225
4370
|
reactRouterConfig,
|
|
4226
|
-
viteConfig
|
|
4371
|
+
viteConfig,
|
|
4372
|
+
data ? {
|
|
4373
|
+
headers: {
|
|
4374
|
+
"X-React-Router-Prerender-Data": encodeURI(data)
|
|
4375
|
+
}
|
|
4376
|
+
} : void 0
|
|
4227
4377
|
);
|
|
4228
4378
|
}
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
clientBuildDirectory,
|
|
4233
|
-
reactRouterConfig,
|
|
4234
|
-
viteConfig,
|
|
4235
|
-
data ? {
|
|
4236
|
-
headers: {
|
|
4237
|
-
"X-React-Router-Prerender-Data": encodeURI(data)
|
|
4238
|
-
}
|
|
4239
|
-
} : void 0
|
|
4240
|
-
);
|
|
4379
|
+
},
|
|
4380
|
+
{
|
|
4381
|
+
concurrency: typeof reactRouterConfig.prerender === "object" && "paths" in reactRouterConfig.prerender ? reactRouterConfig.prerender.unstable_concurrency || 1 : 1
|
|
4241
4382
|
}
|
|
4242
|
-
|
|
4383
|
+
);
|
|
4243
4384
|
}
|
|
4244
4385
|
function getStaticPrerenderPaths(routes) {
|
|
4245
4386
|
let paths = ["/"];
|
|
@@ -4355,31 +4496,40 @@ ${content.toString("utf8")}`
|
|
|
4355
4496
|
);
|
|
4356
4497
|
}
|
|
4357
4498
|
async function getPrerenderPaths(prerender, ssr, routes, logWarning = false) {
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4499
|
+
if (prerender == null || prerender === false) {
|
|
4500
|
+
return [];
|
|
4501
|
+
}
|
|
4502
|
+
let pathsConfig;
|
|
4503
|
+
if (typeof prerender === "object" && "paths" in prerender) {
|
|
4504
|
+
pathsConfig = prerender.paths;
|
|
4505
|
+
} else {
|
|
4506
|
+
pathsConfig = prerender;
|
|
4507
|
+
}
|
|
4508
|
+
if (pathsConfig === false) {
|
|
4509
|
+
return [];
|
|
4510
|
+
}
|
|
4511
|
+
let prerenderRoutes = createPrerenderRoutes(routes);
|
|
4512
|
+
if (pathsConfig === true) {
|
|
4513
|
+
let { paths, paramRoutes } = getStaticPrerenderPaths(prerenderRoutes);
|
|
4514
|
+
if (logWarning && !ssr && paramRoutes.length > 0) {
|
|
4515
|
+
console.warn(
|
|
4516
|
+
import_picocolors4.default.yellow(
|
|
4517
|
+
[
|
|
4518
|
+
"\u26A0\uFE0F Paths with dynamic/splat params cannot be prerendered when using `prerender: true`. You may want to use the `prerender()` API to prerender the following paths:",
|
|
4519
|
+
...paramRoutes.map((p) => " - " + p)
|
|
4520
|
+
].join("\n")
|
|
4521
|
+
)
|
|
4522
|
+
);
|
|
4380
4523
|
}
|
|
4524
|
+
return paths;
|
|
4525
|
+
}
|
|
4526
|
+
if (typeof pathsConfig === "function") {
|
|
4527
|
+
let paths = await pathsConfig({
|
|
4528
|
+
getStaticPaths: () => getStaticPrerenderPaths(prerenderRoutes).paths
|
|
4529
|
+
});
|
|
4530
|
+
return paths;
|
|
4381
4531
|
}
|
|
4382
|
-
return
|
|
4532
|
+
return pathsConfig;
|
|
4383
4533
|
}
|
|
4384
4534
|
function groupRoutesByParentId2(manifest) {
|
|
4385
4535
|
let routes = {};
|
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-afe1c2609",
|
|
4
4
|
"description": "Dev tools and CLI for React Router",
|
|
5
5
|
"homepage": "https://reactrouter.com",
|
|
6
6
|
"bugs": {
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"tinyglobby": "^0.2.14",
|
|
87
87
|
"valibot": "^0.41.0",
|
|
88
88
|
"vite-node": "^3.2.2",
|
|
89
|
-
"@react-router/node": "0.0.0-experimental-
|
|
89
|
+
"@react-router/node": "0.0.0-experimental-afe1c2609"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
92
|
"@types/babel__core": "^7.20.5",
|
|
@@ -109,16 +109,16 @@
|
|
|
109
109
|
"vite": "^6.1.0",
|
|
110
110
|
"wireit": "0.14.9",
|
|
111
111
|
"wrangler": "^4.23.0",
|
|
112
|
-
"
|
|
113
|
-
"react-router": "
|
|
112
|
+
"react-router": "^0.0.0-experimental-afe1c2609",
|
|
113
|
+
"@react-router/serve": "0.0.0-experimental-afe1c2609"
|
|
114
114
|
},
|
|
115
115
|
"peerDependencies": {
|
|
116
116
|
"@vitejs/plugin-rsc": "*",
|
|
117
117
|
"typescript": "^5.1.0",
|
|
118
118
|
"vite": "^5.1.0 || ^6.0.0 || ^7.0.0",
|
|
119
119
|
"wrangler": "^3.28.2 || ^4.0.0",
|
|
120
|
-
"@react-router/serve": "^0.0.0-experimental-
|
|
121
|
-
"react-router": "^0.0.0-experimental-
|
|
120
|
+
"@react-router/serve": "^0.0.0-experimental-afe1c2609",
|
|
121
|
+
"react-router": "^0.0.0-experimental-afe1c2609"
|
|
122
122
|
},
|
|
123
123
|
"peerDependenciesMeta": {
|
|
124
124
|
"@vitejs/plugin-rsc": {
|