@react-router/dev 0.0.0-experimental-54021f573 → 0.0.0-experimental-1d760f6a6
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 +10 -0
- package/dist/cli/index.js +32 -16
- package/dist/config.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/vite/cloudflare.js +17 -6
- package/dist/vite.js +35 -21
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# `@react-router/dev`
|
|
2
2
|
|
|
3
|
+
## 7.5.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Adjust approach for Prerendering/SPA Mode via headers ([#13453](https://github.com/remix-run/react-router/pull/13453))
|
|
8
|
+
- Updated dependencies:
|
|
9
|
+
- `react-router@7.5.2`
|
|
10
|
+
- `@react-router/node@7.5.2`
|
|
11
|
+
- `@react-router/serve@7.5.2`
|
|
12
|
+
|
|
3
13
|
## 7.5.1
|
|
4
14
|
|
|
5
15
|
### 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-1d760f6a6
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) Remix Software Inc.
|
|
6
6
|
*
|
|
@@ -533,13 +533,24 @@ async function loadConfig({ rootDirectory }) {
|
|
|
533
533
|
return config;
|
|
534
534
|
}
|
|
535
535
|
function findEntry(dir, basename2, options) {
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
536
|
+
let currentDir = import_pathe3.default.resolve(dir);
|
|
537
|
+
let { root } = import_pathe3.default.parse(currentDir);
|
|
538
|
+
while (true) {
|
|
539
|
+
for (let ext of options?.extensions ?? entryExts) {
|
|
540
|
+
let file = import_pathe3.default.resolve(currentDir, basename2 + ext);
|
|
541
|
+
if (import_node_fs.default.existsSync(file)) {
|
|
542
|
+
return options?.absolute ?? false ? file : import_pathe3.default.relative(dir, file);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
if (!options?.walkParents) {
|
|
546
|
+
return void 0;
|
|
547
|
+
}
|
|
548
|
+
let parentDir = import_pathe3.default.dirname(currentDir);
|
|
549
|
+
if (currentDir === root || parentDir === currentDir) {
|
|
550
|
+
return void 0;
|
|
540
551
|
}
|
|
552
|
+
currentDir = parentDir;
|
|
541
553
|
}
|
|
542
|
-
return void 0;
|
|
543
554
|
}
|
|
544
555
|
var import_node_fs, import_node_child_process, import_package_json, import_pathe3, import_chokidar, import_picocolors, import_pick2, import_omit, import_cloneDeep, import_isEqual, excludedConfigPresetKeys, mergeReactRouterConfig, deepFreeze, entryExts;
|
|
545
556
|
var init_config = __esm({
|
|
@@ -1738,8 +1749,8 @@ function transpile(tsx, options = {}) {
|
|
|
1738
1749
|
init_profiler();
|
|
1739
1750
|
init_typegen();
|
|
1740
1751
|
init_vite();
|
|
1741
|
-
async function routes(
|
|
1742
|
-
|
|
1752
|
+
async function routes(rootDirectory, flags = {}) {
|
|
1753
|
+
rootDirectory = resolveRootDirectory(rootDirectory, flags);
|
|
1743
1754
|
let configResult = await loadConfig({ rootDirectory });
|
|
1744
1755
|
if (!configResult.ok) {
|
|
1745
1756
|
console.error(import_picocolors7.default.red(configResult.error));
|
|
@@ -1749,9 +1760,7 @@ async function routes(reactRouterRoot, flags = {}) {
|
|
|
1749
1760
|
console.log(formatRoutes(configResult.value.routes, format));
|
|
1750
1761
|
}
|
|
1751
1762
|
async function build2(root, options = {}) {
|
|
1752
|
-
|
|
1753
|
-
root = process.env.REACT_ROUTER_ROOT || process.cwd();
|
|
1754
|
-
}
|
|
1763
|
+
root = resolveRootDirectory(root, options);
|
|
1755
1764
|
let { build: build3 } = await Promise.resolve().then(() => (init_build(), build_exports));
|
|
1756
1765
|
if (options.profile) {
|
|
1757
1766
|
await start();
|
|
@@ -1768,6 +1777,7 @@ async function dev2(root, options = {}) {
|
|
|
1768
1777
|
await start();
|
|
1769
1778
|
}
|
|
1770
1779
|
(0, import_exit_hook.default)(() => stop(console.info));
|
|
1780
|
+
root = resolveRootDirectory(root, options);
|
|
1771
1781
|
await dev3(root, options);
|
|
1772
1782
|
await new Promise(() => {
|
|
1773
1783
|
});
|
|
@@ -1779,13 +1789,13 @@ var conjunctionListFormat = new Intl.ListFormat("en", {
|
|
|
1779
1789
|
style: "long",
|
|
1780
1790
|
type: "conjunction"
|
|
1781
1791
|
});
|
|
1782
|
-
async function generateEntry(entry,
|
|
1792
|
+
async function generateEntry(entry, rootDirectory, flags = {}) {
|
|
1783
1793
|
if (!entry) {
|
|
1784
|
-
await generateEntry("entry.client",
|
|
1785
|
-
await generateEntry("entry.server",
|
|
1794
|
+
await generateEntry("entry.client", rootDirectory, flags);
|
|
1795
|
+
await generateEntry("entry.server", rootDirectory, flags);
|
|
1786
1796
|
return;
|
|
1787
1797
|
}
|
|
1788
|
-
|
|
1798
|
+
rootDirectory = resolveRootDirectory(rootDirectory, flags);
|
|
1789
1799
|
let configResult = await loadConfig({ rootDirectory });
|
|
1790
1800
|
if (!configResult.ok) {
|
|
1791
1801
|
console.error(import_picocolors7.default.red(configResult.error));
|
|
@@ -1841,6 +1851,12 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
|
|
|
1841
1851
|
)
|
|
1842
1852
|
);
|
|
1843
1853
|
}
|
|
1854
|
+
function resolveRootDirectory(root, flags) {
|
|
1855
|
+
if (root) {
|
|
1856
|
+
return path8.resolve(root);
|
|
1857
|
+
}
|
|
1858
|
+
return process.env.REACT_ROUTER_ROOT || (flags?.config ? path8.dirname(path8.resolve(flags.config)) : process.cwd());
|
|
1859
|
+
}
|
|
1844
1860
|
async function checkForEntry(rootDirectory, appDirectory, entries2) {
|
|
1845
1861
|
for (let entry of entries2) {
|
|
1846
1862
|
let entryPath = path8.resolve(appDirectory, entry);
|
|
@@ -1863,7 +1879,7 @@ async function createClientEntry(rootDirectory, appDirectory, inputFile) {
|
|
|
1863
1879
|
return contents;
|
|
1864
1880
|
}
|
|
1865
1881
|
async function typegen(root, flags) {
|
|
1866
|
-
root
|
|
1882
|
+
root = resolveRootDirectory(root, flags);
|
|
1867
1883
|
if (flags.watch) {
|
|
1868
1884
|
await preloadVite();
|
|
1869
1885
|
const vite2 = getVite();
|
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-1d760f6a6
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -627,13 +627,24 @@ async function loadConfig({ rootDirectory }) {
|
|
|
627
627
|
}
|
|
628
628
|
var entryExts = [".js", ".jsx", ".ts", ".tsx"];
|
|
629
629
|
function findEntry(dir, basename, options) {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
630
|
+
let currentDir = import_pathe3.default.resolve(dir);
|
|
631
|
+
let { root } = import_pathe3.default.parse(currentDir);
|
|
632
|
+
while (true) {
|
|
633
|
+
for (let ext of options?.extensions ?? entryExts) {
|
|
634
|
+
let file = import_pathe3.default.resolve(currentDir, basename + ext);
|
|
635
|
+
if (import_node_fs.default.existsSync(file)) {
|
|
636
|
+
return options?.absolute ?? false ? file : import_pathe3.default.relative(dir, file);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
if (!options?.walkParents) {
|
|
640
|
+
return void 0;
|
|
641
|
+
}
|
|
642
|
+
let parentDir = import_pathe3.default.dirname(currentDir);
|
|
643
|
+
if (currentDir === root || parentDir === currentDir) {
|
|
644
|
+
return void 0;
|
|
634
645
|
}
|
|
646
|
+
currentDir = parentDir;
|
|
635
647
|
}
|
|
636
|
-
return void 0;
|
|
637
648
|
}
|
|
638
649
|
|
|
639
650
|
// vite/cloudflare-dev-proxy.ts
|
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-1d760f6a6
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -595,7 +595,18 @@ async function resolveEntryFiles({
|
|
|
595
595
|
let userEntryServerFile = findEntry(appDirectory, "entry.server");
|
|
596
596
|
let entryServerFile;
|
|
597
597
|
let entryClientFile = userEntryClientFile || "entry.client.tsx";
|
|
598
|
-
let
|
|
598
|
+
let packageJsonPath = findEntry(rootDirectory, "package", {
|
|
599
|
+
extensions: [".json"],
|
|
600
|
+
absolute: true,
|
|
601
|
+
walkParents: true
|
|
602
|
+
});
|
|
603
|
+
if (!packageJsonPath) {
|
|
604
|
+
throw new Error(
|
|
605
|
+
`Could not find package.json in ${rootDirectory} or any of its parent directories`
|
|
606
|
+
);
|
|
607
|
+
}
|
|
608
|
+
let packageJsonDirectory = import_pathe3.default.dirname(packageJsonPath);
|
|
609
|
+
let pkgJson = await import_package_json.default.load(packageJsonDirectory);
|
|
599
610
|
let deps = pkgJson.content.dependencies ?? {};
|
|
600
611
|
if (userEntryServerFile) {
|
|
601
612
|
entryServerFile = userEntryServerFile;
|
|
@@ -618,7 +629,7 @@ async function resolveEntryFiles({
|
|
|
618
629
|
await pkgJson.save();
|
|
619
630
|
let packageManager = detectPackageManager() ?? "npm";
|
|
620
631
|
(0, import_node_child_process.execSync)(`${packageManager} install`, {
|
|
621
|
-
cwd:
|
|
632
|
+
cwd: packageJsonDirectory,
|
|
622
633
|
stdio: "inherit"
|
|
623
634
|
});
|
|
624
635
|
}
|
|
@@ -630,13 +641,24 @@ async function resolveEntryFiles({
|
|
|
630
641
|
}
|
|
631
642
|
var entryExts = [".js", ".jsx", ".ts", ".tsx"];
|
|
632
643
|
function findEntry(dir, basename2, options) {
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
644
|
+
let currentDir = import_pathe3.default.resolve(dir);
|
|
645
|
+
let { root } = import_pathe3.default.parse(currentDir);
|
|
646
|
+
while (true) {
|
|
647
|
+
for (let ext of options?.extensions ?? entryExts) {
|
|
648
|
+
let file = import_pathe3.default.resolve(currentDir, basename2 + ext);
|
|
649
|
+
if (import_node_fs.default.existsSync(file)) {
|
|
650
|
+
return options?.absolute ?? false ? file : import_pathe3.default.relative(dir, file);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
if (!options?.walkParents) {
|
|
654
|
+
return void 0;
|
|
637
655
|
}
|
|
656
|
+
let parentDir = import_pathe3.default.dirname(currentDir);
|
|
657
|
+
if (currentDir === root || parentDir === currentDir) {
|
|
658
|
+
return void 0;
|
|
659
|
+
}
|
|
660
|
+
currentDir = parentDir;
|
|
638
661
|
}
|
|
639
|
-
return void 0;
|
|
640
662
|
}
|
|
641
663
|
|
|
642
664
|
// vite/babel.ts
|
|
@@ -3087,6 +3109,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3087
3109
|
].join("\n")
|
|
3088
3110
|
);
|
|
3089
3111
|
}
|
|
3112
|
+
process.env.IS_RR_BUILD_REQUEST = "yes";
|
|
3090
3113
|
if (isPrerenderingEnabled(ctx.reactRouterConfig)) {
|
|
3091
3114
|
await handlePrerender(
|
|
3092
3115
|
viteConfig,
|
|
@@ -3749,11 +3772,6 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
3749
3772
|
}
|
|
3750
3773
|
}
|
|
3751
3774
|
let buildRoutes = createPrerenderRoutes(build.routes);
|
|
3752
|
-
let headers = {
|
|
3753
|
-
// Header that can be used in the loader to know if you're running at
|
|
3754
|
-
// build time or runtime
|
|
3755
|
-
"X-React-Router-Prerender": "yes"
|
|
3756
|
-
};
|
|
3757
3775
|
for (let path7 of build.prerender) {
|
|
3758
3776
|
let matches = (0, import_react_router2.matchRoutes)(buildRoutes, `/${path7}/`.replace(/^\/\/+/, "/"));
|
|
3759
3777
|
if (!matches) {
|
|
@@ -3772,16 +3790,14 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
3772
3790
|
[leafRoute.id],
|
|
3773
3791
|
clientBuildDirectory,
|
|
3774
3792
|
reactRouterConfig,
|
|
3775
|
-
viteConfig
|
|
3776
|
-
{ headers }
|
|
3793
|
+
viteConfig
|
|
3777
3794
|
);
|
|
3778
3795
|
await prerenderResourceRoute(
|
|
3779
3796
|
handler,
|
|
3780
3797
|
path7,
|
|
3781
3798
|
clientBuildDirectory,
|
|
3782
3799
|
reactRouterConfig,
|
|
3783
|
-
viteConfig
|
|
3784
|
-
{ headers }
|
|
3800
|
+
viteConfig
|
|
3785
3801
|
);
|
|
3786
3802
|
} else {
|
|
3787
3803
|
viteConfig.logger.warn(
|
|
@@ -3800,8 +3816,7 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
3800
3816
|
null,
|
|
3801
3817
|
clientBuildDirectory,
|
|
3802
3818
|
reactRouterConfig,
|
|
3803
|
-
viteConfig
|
|
3804
|
-
{ headers }
|
|
3819
|
+
viteConfig
|
|
3805
3820
|
);
|
|
3806
3821
|
}
|
|
3807
3822
|
await prerenderRoute(
|
|
@@ -3812,10 +3827,9 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
3812
3827
|
viteConfig,
|
|
3813
3828
|
data ? {
|
|
3814
3829
|
headers: {
|
|
3815
|
-
...headers,
|
|
3816
3830
|
"X-React-Router-Prerender-Data": encodeURI(data)
|
|
3817
3831
|
}
|
|
3818
|
-
} :
|
|
3832
|
+
} : void 0
|
|
3819
3833
|
);
|
|
3820
3834
|
}
|
|
3821
3835
|
}
|
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-1d760f6a6",
|
|
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
|
"set-cookie-parser": "^2.6.0",
|
|
87
87
|
"valibot": "^0.41.0",
|
|
88
88
|
"vite-node": "3.0.0-beta.2",
|
|
89
|
-
"@react-router/node": "0.0.0-experimental-
|
|
89
|
+
"@react-router/node": "0.0.0-experimental-1d760f6a6"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
92
|
"@types/babel__core": "^7.20.5",
|
|
@@ -110,15 +110,15 @@
|
|
|
110
110
|
"vite": "^6.1.0",
|
|
111
111
|
"wireit": "0.14.9",
|
|
112
112
|
"wrangler": "^4.2.0",
|
|
113
|
-
"@react-router/serve": "0.0.0-experimental-
|
|
114
|
-
"react-router": "^0.0.0-experimental-
|
|
113
|
+
"@react-router/serve": "0.0.0-experimental-1d760f6a6",
|
|
114
|
+
"react-router": "^0.0.0-experimental-1d760f6a6"
|
|
115
115
|
},
|
|
116
116
|
"peerDependencies": {
|
|
117
117
|
"typescript": "^5.1.0",
|
|
118
118
|
"vite": "^5.1.0 || ^6.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-1d760f6a6",
|
|
121
|
+
"react-router": "^0.0.0-experimental-1d760f6a6"
|
|
122
122
|
},
|
|
123
123
|
"peerDependenciesMeta": {
|
|
124
124
|
"@react-router/serve": {
|