@react-router/dev 0.0.0-experimental-61f2749d7 → 0.0.0-experimental-6336d71a9
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 -8
- package/dist/cli/index.js +5 -8
- package/dist/config/default-rsc-entries/entry.rsc.tsx +3 -0
- package/dist/config/default-rsc-entries/entry.ssr.tsx +2 -4
- package/dist/config.js +1 -1
- package/dist/internal.js +53 -2
- package/dist/routes.js +1 -1
- package/dist/vite/cloudflare.js +6 -72
- package/dist/vite.js +6 -72
- package/package.json +9 -10
package/CHANGELOG.md
CHANGED
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
- Stabilize middleware and context APIs. ([#14215](https://github.com/remix-run/react-router/pull/14215))
|
|
18
18
|
|
|
19
19
|
We have removed the `unstable_` prefix from the following APIs and they are now considered stable and ready for production use:
|
|
20
|
-
|
|
21
20
|
- [`RouterContextProvider`](https://reactrouter.com/api/utils/RouterContextProvider)
|
|
22
21
|
- [`createContext`](https://reactrouter.com/api/utils/createContext)
|
|
23
22
|
- `createBrowserRouter` [`getContext`](https://reactrouter.com/api/data-routers/createBrowserRouter#optsgetcontext) option
|
|
@@ -760,7 +759,6 @@
|
|
|
760
759
|
```
|
|
761
760
|
|
|
762
761
|
This initial implementation targets type inference for:
|
|
763
|
-
|
|
764
762
|
- `Params` : Path parameters from your routing config in `routes.ts` including file-based routing
|
|
765
763
|
- `LoaderData` : Loader data from `loader` and/or `clientLoader` within your route module
|
|
766
764
|
- `ActionData` : Action data from `action` and/or `clientAction` within your route module
|
|
@@ -775,7 +773,6 @@
|
|
|
775
773
|
```
|
|
776
774
|
|
|
777
775
|
Check out our docs for more:
|
|
778
|
-
|
|
779
776
|
- [_Explanations > Type Safety_](https://reactrouter.com/dev/guides/explanation/type-safety)
|
|
780
777
|
- [_How-To > Setting up type safety_](https://reactrouter.com/dev/guides/how-to/setting-up-type-safety)
|
|
781
778
|
|
|
@@ -975,7 +972,6 @@
|
|
|
975
972
|
- Vite: Provide `Unstable_ServerBundlesFunction` and `Unstable_VitePluginConfig` types ([#8654](https://github.com/remix-run/remix/pull/8654))
|
|
976
973
|
|
|
977
974
|
- Vite: add `--sourcemapClient` and `--sourcemapServer` flags to `remix vite:build` ([#8613](https://github.com/remix-run/remix/pull/8613))
|
|
978
|
-
|
|
979
975
|
- `--sourcemapClient`
|
|
980
976
|
|
|
981
977
|
- `--sourcemapClient=inline`
|
|
@@ -1312,7 +1308,6 @@
|
|
|
1312
1308
|
- Add support for `clientLoader`/`clientAction`/`HydrateFallback` route exports ([RFC](https://github.com/remix-run/remix/discussions/7634)) ([#8173](https://github.com/remix-run/remix/pull/8173))
|
|
1313
1309
|
|
|
1314
1310
|
Remix now supports loaders/actions that run on the client (in addition to, or instead of the loader/action that runs on the server). While we still recommend server loaders/actions for the majority of your data needs in a Remix app - these provide some levers you can pull for more advanced use-cases such as:
|
|
1315
|
-
|
|
1316
1311
|
- Leveraging a data source local to the browser (i.e., `localStorage`)
|
|
1317
1312
|
- Managing a client-side cache of server data (like `IndexedDB`)
|
|
1318
1313
|
- Bypassing the Remix server in a BFF setup and hitting your API directly from the browser
|
|
@@ -1716,7 +1711,6 @@
|
|
|
1716
1711
|
- Output esbuild metafiles for bundle analysis ([#6772](https://github.com/remix-run/remix/pull/6772))
|
|
1717
1712
|
|
|
1718
1713
|
Written to server build directory (`build/` by default):
|
|
1719
|
-
|
|
1720
1714
|
- `metafile.css.json`
|
|
1721
1715
|
- `metafile.js.json` (browser JS)
|
|
1722
1716
|
- `metafile.server.json` (server JS)
|
|
@@ -1814,7 +1808,6 @@
|
|
|
1814
1808
|
- built-in tls support ([#6483](https://github.com/remix-run/remix/pull/6483))
|
|
1815
1809
|
|
|
1816
1810
|
New options:
|
|
1817
|
-
|
|
1818
1811
|
- `--tls-key` / `tlsKey`: TLS key
|
|
1819
1812
|
- `--tls-cert` / `tlsCert`: TLS Certificate
|
|
1820
1813
|
|
|
@@ -2085,7 +2078,6 @@
|
|
|
2085
2078
|
```
|
|
2086
2079
|
|
|
2087
2080
|
The dev server will:
|
|
2088
|
-
|
|
2089
2081
|
- force `NODE_ENV=development` and warn you if it was previously set to something else
|
|
2090
2082
|
- rebuild your app whenever your Remix app code changes
|
|
2091
2083
|
- restart your app server whenever rebuilds succeed
|
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-6336d71a9
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) Remix Software Inc.
|
|
6
6
|
*
|
|
@@ -1331,15 +1331,11 @@ var init_has_rsc_plugin = __esm({
|
|
|
1331
1331
|
});
|
|
1332
1332
|
|
|
1333
1333
|
// vite/node-adapter.ts
|
|
1334
|
-
var
|
|
1334
|
+
var import_node_fetch_server;
|
|
1335
1335
|
var init_node_adapter = __esm({
|
|
1336
1336
|
"vite/node-adapter.ts"() {
|
|
1337
1337
|
"use strict";
|
|
1338
|
-
|
|
1339
|
-
import_node_tls = require("tls");
|
|
1340
|
-
import_node_stream = require("stream");
|
|
1341
|
-
import_set_cookie_parser = require("set-cookie-parser");
|
|
1342
|
-
import_node = require("@react-router/node");
|
|
1338
|
+
import_node_fetch_server = require("@remix-run/node-fetch-server");
|
|
1343
1339
|
init_invariant();
|
|
1344
1340
|
}
|
|
1345
1341
|
});
|
|
@@ -1752,7 +1748,7 @@ function resolveEnvironmentsOptions(environmentResolvers, resolverOptions) {
|
|
|
1752
1748
|
function isNonNullable(x) {
|
|
1753
1749
|
return x != null;
|
|
1754
1750
|
}
|
|
1755
|
-
var import_node_crypto, import_node_fs3, import_promises2, path7, url, babel2, import_react_router2, import_es_module_lexer, import_pick3, import_jsesc, import_picocolors5, import_kebabCase, CLIENT_NON_COMPONENT_EXPORTS, CLIENT_ROUTE_EXPORTS, BUILD_CLIENT_ROUTE_QUERY_STRING, SSR_BUNDLE_PREFIX, virtualHmrRuntime, virtualInjectHmrRuntime, virtual, getServerBuildDirectory, getClientBuildDirectory, defaultEntriesDir, defaultEntries, REACT_REFRESH_HEADER;
|
|
1751
|
+
var import_node_crypto, import_node_fs3, import_promises2, path7, url, babel2, import_node_fetch_server2, import_react_router2, import_es_module_lexer, import_pick3, import_jsesc, import_picocolors5, import_kebabCase, CLIENT_NON_COMPONENT_EXPORTS, CLIENT_ROUTE_EXPORTS, BUILD_CLIENT_ROUTE_QUERY_STRING, SSR_BUNDLE_PREFIX, virtualHmrRuntime, virtualInjectHmrRuntime, virtual, getServerBuildDirectory, getClientBuildDirectory, defaultEntriesDir, defaultEntries, REACT_REFRESH_HEADER;
|
|
1756
1752
|
var init_plugin = __esm({
|
|
1757
1753
|
"vite/plugin.ts"() {
|
|
1758
1754
|
"use strict";
|
|
@@ -1762,6 +1758,7 @@ var init_plugin = __esm({
|
|
|
1762
1758
|
path7 = __toESM(require("path"));
|
|
1763
1759
|
url = __toESM(require("url"));
|
|
1764
1760
|
babel2 = __toESM(require("@babel/core"));
|
|
1761
|
+
import_node_fetch_server2 = require("@remix-run/node-fetch-server");
|
|
1765
1762
|
import_react_router2 = require("react-router");
|
|
1766
1763
|
import_es_module_lexer = require("es-module-lexer");
|
|
1767
1764
|
import_pick3 = __toESM(require("lodash/pick"));
|
|
@@ -10,6 +10,7 @@ import { unstable_matchRSCServerRequest as matchRSCServerRequest } from "react-r
|
|
|
10
10
|
|
|
11
11
|
import routes from "virtual:react-router/unstable_rsc/routes";
|
|
12
12
|
import basename from "virtual:react-router/unstable_rsc/basename";
|
|
13
|
+
import unstable_reactRouterServeConfig from "virtual:react-router/unstable_rsc/react-router-serve-config";
|
|
13
14
|
|
|
14
15
|
export async function fetchServer(request: Request) {
|
|
15
16
|
return await matchRSCServerRequest({
|
|
@@ -30,6 +31,8 @@ export async function fetchServer(request: Request) {
|
|
|
30
31
|
});
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
export { unstable_reactRouterServeConfig };
|
|
35
|
+
|
|
33
36
|
export default async function handler(request: Request) {
|
|
34
37
|
const ssr = await import.meta.viteRsc.loadModule<
|
|
35
38
|
typeof import("./entry.ssr")
|
|
@@ -18,16 +18,14 @@ export default async function handler(
|
|
|
18
18
|
fetchServer,
|
|
19
19
|
createFromReadableStream,
|
|
20
20
|
async renderHTML(getPayload) {
|
|
21
|
-
const payload =
|
|
22
|
-
const formState =
|
|
23
|
-
payload.type === "render" ? await payload.formState : undefined;
|
|
21
|
+
const payload = getPayload();
|
|
24
22
|
|
|
25
23
|
return ReactDomServer.renderToReadableStream(
|
|
26
24
|
<RSCStaticRouter getPayload={getPayload} />,
|
|
27
25
|
{
|
|
28
26
|
bootstrapScriptContent,
|
|
29
27
|
signal: request.signal,
|
|
30
|
-
formState,
|
|
28
|
+
formState: await payload.formState,
|
|
31
29
|
},
|
|
32
30
|
);
|
|
33
31
|
},
|
package/dist/config.js
CHANGED
package/dist/internal.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-6336d71a9
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -1781,6 +1781,7 @@ function reactRouterRSCVitePlugin() {
|
|
|
1781
1781
|
let configLoader;
|
|
1782
1782
|
let typegenWatcherPromise;
|
|
1783
1783
|
let viteCommand;
|
|
1784
|
+
let resolvedViteConfig;
|
|
1784
1785
|
let routeIdByFile;
|
|
1785
1786
|
let logger;
|
|
1786
1787
|
const defaultEntries = getDefaultEntries();
|
|
@@ -1892,6 +1893,12 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
1892
1893
|
}
|
|
1893
1894
|
},
|
|
1894
1895
|
outDir: (0, import_pathe6.join)(config.buildDirectory, "client")
|
|
1896
|
+
},
|
|
1897
|
+
optimizeDeps: {
|
|
1898
|
+
include: [
|
|
1899
|
+
"react-router > cookie",
|
|
1900
|
+
"react-router > set-cookie-parser"
|
|
1901
|
+
]
|
|
1895
1902
|
}
|
|
1896
1903
|
},
|
|
1897
1904
|
rsc: {
|
|
@@ -1953,6 +1960,9 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
1953
1960
|
}
|
|
1954
1961
|
};
|
|
1955
1962
|
},
|
|
1963
|
+
configResolved(viteConfig) {
|
|
1964
|
+
resolvedViteConfig = viteConfig;
|
|
1965
|
+
},
|
|
1956
1966
|
async configureServer(viteDevServer) {
|
|
1957
1967
|
configLoader.onChange(
|
|
1958
1968
|
async ({
|
|
@@ -1986,6 +1996,24 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
1986
1996
|
await configLoader.close();
|
|
1987
1997
|
}
|
|
1988
1998
|
},
|
|
1999
|
+
/* @__PURE__ */ (() => {
|
|
2000
|
+
let logged = false;
|
|
2001
|
+
function logExperimentalNotice() {
|
|
2002
|
+
if (logged) return;
|
|
2003
|
+
logged = true;
|
|
2004
|
+
logger.info(
|
|
2005
|
+
import_picocolors4.default.yellow(
|
|
2006
|
+
`${viteCommand === "serve" ? " " : ""}\u{1F9EA} Using React Router's RSC Framework Mode (experimental)`
|
|
2007
|
+
)
|
|
2008
|
+
);
|
|
2009
|
+
}
|
|
2010
|
+
return {
|
|
2011
|
+
name: "react-router/rsc/log-experimental-notice",
|
|
2012
|
+
sharedDuringBuild: true,
|
|
2013
|
+
buildStart: logExperimentalNotice,
|
|
2014
|
+
configureServer: logExperimentalNotice
|
|
2015
|
+
};
|
|
2016
|
+
})(),
|
|
1989
2017
|
{
|
|
1990
2018
|
name: "react-router/rsc/typegen",
|
|
1991
2019
|
async config(viteUserConfig, { command, mode }) {
|
|
@@ -2186,6 +2214,28 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
2186
2214
|
return modules;
|
|
2187
2215
|
}
|
|
2188
2216
|
},
|
|
2217
|
+
{
|
|
2218
|
+
name: "react-router/rsc/virtual-react-router-serve-config",
|
|
2219
|
+
resolveId(id) {
|
|
2220
|
+
if (id === virtual.reactRouterServeConfig.id) {
|
|
2221
|
+
return virtual.reactRouterServeConfig.resolvedId;
|
|
2222
|
+
}
|
|
2223
|
+
},
|
|
2224
|
+
load(id) {
|
|
2225
|
+
if (id === virtual.reactRouterServeConfig.resolvedId) {
|
|
2226
|
+
const rscOutDir = resolvedViteConfig.environments.rsc?.build?.outDir;
|
|
2227
|
+
invariant(rscOutDir, "RSC build directory config not found");
|
|
2228
|
+
const clientOutDir = resolvedViteConfig.environments.client?.build?.outDir;
|
|
2229
|
+
invariant(clientOutDir, "Client build directory config not found");
|
|
2230
|
+
const assetsBuildDirectory = Path5.relative(rscOutDir, clientOutDir);
|
|
2231
|
+
const publicPath = resolvedViteConfig.base;
|
|
2232
|
+
return `export default ${JSON.stringify({
|
|
2233
|
+
assetsBuildDirectory,
|
|
2234
|
+
publicPath
|
|
2235
|
+
})};`;
|
|
2236
|
+
}
|
|
2237
|
+
}
|
|
2238
|
+
},
|
|
2189
2239
|
validatePluginOrder(),
|
|
2190
2240
|
warnOnClientSourceMaps()
|
|
2191
2241
|
];
|
|
@@ -2195,7 +2245,8 @@ var virtual = {
|
|
|
2195
2245
|
injectHmrRuntime: create("unstable_rsc/inject-hmr-runtime"),
|
|
2196
2246
|
hmrRuntime: create("unstable_rsc/runtime"),
|
|
2197
2247
|
basename: create("unstable_rsc/basename"),
|
|
2198
|
-
rscEntry: create("unstable_rsc/rsc-entry")
|
|
2248
|
+
rscEntry: create("unstable_rsc/rsc-entry"),
|
|
2249
|
+
reactRouterServeConfig: create("unstable_rsc/react-router-serve-config")
|
|
2199
2250
|
};
|
|
2200
2251
|
function invalidateVirtualModules(viteDevServer) {
|
|
2201
2252
|
for (const vmod of Object.values(virtual)) {
|
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-6336d71a9
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -45,14 +45,11 @@ __export(cloudflare_exports, {
|
|
|
45
45
|
module.exports = __toCommonJS(cloudflare_exports);
|
|
46
46
|
|
|
47
47
|
// vite/cloudflare-dev-proxy.ts
|
|
48
|
+
var import_node_fetch_server2 = require("@remix-run/node-fetch-server");
|
|
48
49
|
var import_react_router = require("react-router");
|
|
49
50
|
|
|
50
51
|
// vite/node-adapter.ts
|
|
51
|
-
var
|
|
52
|
-
var import_node_tls = require("tls");
|
|
53
|
-
var import_node_stream = require("stream");
|
|
54
|
-
var import_set_cookie_parser = require("set-cookie-parser");
|
|
55
|
-
var import_node = require("@react-router/node");
|
|
52
|
+
var import_node_fetch_server = require("@remix-run/node-fetch-server");
|
|
56
53
|
|
|
57
54
|
// invariant.ts
|
|
58
55
|
function invariant(value, message) {
|
|
@@ -65,76 +62,13 @@ function invariant(value, message) {
|
|
|
65
62
|
}
|
|
66
63
|
|
|
67
64
|
// vite/node-adapter.ts
|
|
68
|
-
function fromNodeHeaders(nodeReq) {
|
|
69
|
-
let nodeHeaders = nodeReq.headers;
|
|
70
|
-
if (nodeReq.httpVersionMajor >= 2) {
|
|
71
|
-
nodeHeaders = { ...nodeHeaders };
|
|
72
|
-
if (nodeHeaders[":authority"]) {
|
|
73
|
-
nodeHeaders.host = nodeHeaders[":authority"];
|
|
74
|
-
}
|
|
75
|
-
delete nodeHeaders[":authority"];
|
|
76
|
-
delete nodeHeaders[":method"];
|
|
77
|
-
delete nodeHeaders[":path"];
|
|
78
|
-
delete nodeHeaders[":scheme"];
|
|
79
|
-
}
|
|
80
|
-
let headers = new Headers();
|
|
81
|
-
for (let [key, values] of Object.entries(nodeHeaders)) {
|
|
82
|
-
if (values) {
|
|
83
|
-
if (Array.isArray(values)) {
|
|
84
|
-
for (let value of values) {
|
|
85
|
-
headers.append(key, value);
|
|
86
|
-
}
|
|
87
|
-
} else {
|
|
88
|
-
headers.set(key, values);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return headers;
|
|
93
|
-
}
|
|
94
65
|
function fromNodeRequest(nodeReq, nodeRes) {
|
|
95
|
-
let protocol = nodeReq.socket instanceof import_node_tls.TLSSocket && nodeReq.socket.encrypted ? "https" : "http";
|
|
96
|
-
let origin = nodeReq.headers.origin && "null" !== nodeReq.headers.origin ? nodeReq.headers.origin : `${protocol}://${nodeReq.headers.host}`;
|
|
97
66
|
invariant(
|
|
98
67
|
nodeReq.originalUrl,
|
|
99
68
|
"Expected `nodeReq.originalUrl` to be defined"
|
|
100
69
|
);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
let init = {
|
|
104
|
-
method: nodeReq.method,
|
|
105
|
-
headers: fromNodeHeaders(nodeReq),
|
|
106
|
-
signal: controller.signal
|
|
107
|
-
};
|
|
108
|
-
nodeRes.on("finish", () => controller = null);
|
|
109
|
-
nodeRes.on("close", () => controller?.abort());
|
|
110
|
-
if (nodeReq.method !== "GET" && nodeReq.method !== "HEAD") {
|
|
111
|
-
init.body = (0, import_node.createReadableStreamFromReadable)(nodeReq);
|
|
112
|
-
init.duplex = "half";
|
|
113
|
-
}
|
|
114
|
-
return new Request(url.href, init);
|
|
115
|
-
}
|
|
116
|
-
async function toNodeRequest(res, nodeRes) {
|
|
117
|
-
nodeRes.statusCode = res.status;
|
|
118
|
-
if (!nodeRes.req || nodeRes.req.httpVersionMajor < 2) {
|
|
119
|
-
nodeRes.statusMessage = res.statusText;
|
|
120
|
-
}
|
|
121
|
-
let cookiesStrings = [];
|
|
122
|
-
for (let [name, value] of res.headers) {
|
|
123
|
-
if (name === "set-cookie") {
|
|
124
|
-
cookiesStrings.push(...(0, import_set_cookie_parser.splitCookiesString)(value));
|
|
125
|
-
} else nodeRes.setHeader(name, value);
|
|
126
|
-
}
|
|
127
|
-
if (cookiesStrings.length) {
|
|
128
|
-
nodeRes.setHeader("set-cookie", cookiesStrings);
|
|
129
|
-
}
|
|
130
|
-
if (res.body) {
|
|
131
|
-
let responseBody = res.body;
|
|
132
|
-
let readable = import_node_stream.Readable.from(responseBody);
|
|
133
|
-
readable.pipe(nodeRes);
|
|
134
|
-
await (0, import_node_events.once)(readable, "end");
|
|
135
|
-
} else {
|
|
136
|
-
nodeRes.end();
|
|
137
|
-
}
|
|
70
|
+
nodeReq.url = nodeReq.originalUrl;
|
|
71
|
+
return (0, import_node_fetch_server.createRequest)(nodeReq, nodeRes);
|
|
138
72
|
}
|
|
139
73
|
|
|
140
74
|
// vite/vite.ts
|
|
@@ -884,7 +818,7 @@ var cloudflareDevProxyVitePlugin = (options = {}) => {
|
|
|
884
818
|
context ??= await getContext();
|
|
885
819
|
let loadContext = getLoadContext ? await getLoadContext({ request: req, context }) : context;
|
|
886
820
|
let res = await handler(req, loadContext);
|
|
887
|
-
await
|
|
821
|
+
await (0, import_node_fetch_server2.sendResponse)(nodeRes, res);
|
|
888
822
|
} catch (error) {
|
|
889
823
|
next(error);
|
|
890
824
|
}
|
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-6336d71a9
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -51,6 +51,7 @@ var import_promises2 = require("fs/promises");
|
|
|
51
51
|
var path6 = __toESM(require("path"));
|
|
52
52
|
var url = __toESM(require("url"));
|
|
53
53
|
var babel = __toESM(require("@babel/core"));
|
|
54
|
+
var import_node_fetch_server2 = require("@remix-run/node-fetch-server");
|
|
54
55
|
var import_react_router2 = require("react-router");
|
|
55
56
|
var import_es_module_lexer = require("es-module-lexer");
|
|
56
57
|
var import_pick3 = __toESM(require("lodash/pick"));
|
|
@@ -1254,81 +1255,14 @@ async function watch(rootDirectory, { mode, logger, rsc }) {
|
|
|
1254
1255
|
}
|
|
1255
1256
|
|
|
1256
1257
|
// vite/node-adapter.ts
|
|
1257
|
-
var
|
|
1258
|
-
var import_node_tls = require("tls");
|
|
1259
|
-
var import_node_stream = require("stream");
|
|
1260
|
-
var import_set_cookie_parser = require("set-cookie-parser");
|
|
1261
|
-
var import_node = require("@react-router/node");
|
|
1262
|
-
function fromNodeHeaders(nodeReq) {
|
|
1263
|
-
let nodeHeaders = nodeReq.headers;
|
|
1264
|
-
if (nodeReq.httpVersionMajor >= 2) {
|
|
1265
|
-
nodeHeaders = { ...nodeHeaders };
|
|
1266
|
-
if (nodeHeaders[":authority"]) {
|
|
1267
|
-
nodeHeaders.host = nodeHeaders[":authority"];
|
|
1268
|
-
}
|
|
1269
|
-
delete nodeHeaders[":authority"];
|
|
1270
|
-
delete nodeHeaders[":method"];
|
|
1271
|
-
delete nodeHeaders[":path"];
|
|
1272
|
-
delete nodeHeaders[":scheme"];
|
|
1273
|
-
}
|
|
1274
|
-
let headers = new Headers();
|
|
1275
|
-
for (let [key, values] of Object.entries(nodeHeaders)) {
|
|
1276
|
-
if (values) {
|
|
1277
|
-
if (Array.isArray(values)) {
|
|
1278
|
-
for (let value of values) {
|
|
1279
|
-
headers.append(key, value);
|
|
1280
|
-
}
|
|
1281
|
-
} else {
|
|
1282
|
-
headers.set(key, values);
|
|
1283
|
-
}
|
|
1284
|
-
}
|
|
1285
|
-
}
|
|
1286
|
-
return headers;
|
|
1287
|
-
}
|
|
1258
|
+
var import_node_fetch_server = require("@remix-run/node-fetch-server");
|
|
1288
1259
|
function fromNodeRequest(nodeReq, nodeRes) {
|
|
1289
|
-
let protocol = nodeReq.socket instanceof import_node_tls.TLSSocket && nodeReq.socket.encrypted ? "https" : "http";
|
|
1290
|
-
let origin = nodeReq.headers.origin && "null" !== nodeReq.headers.origin ? nodeReq.headers.origin : `${protocol}://${nodeReq.headers.host}`;
|
|
1291
1260
|
invariant(
|
|
1292
1261
|
nodeReq.originalUrl,
|
|
1293
1262
|
"Expected `nodeReq.originalUrl` to be defined"
|
|
1294
1263
|
);
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
let init = {
|
|
1298
|
-
method: nodeReq.method,
|
|
1299
|
-
headers: fromNodeHeaders(nodeReq),
|
|
1300
|
-
signal: controller.signal
|
|
1301
|
-
};
|
|
1302
|
-
nodeRes.on("finish", () => controller = null);
|
|
1303
|
-
nodeRes.on("close", () => controller?.abort());
|
|
1304
|
-
if (nodeReq.method !== "GET" && nodeReq.method !== "HEAD") {
|
|
1305
|
-
init.body = (0, import_node.createReadableStreamFromReadable)(nodeReq);
|
|
1306
|
-
init.duplex = "half";
|
|
1307
|
-
}
|
|
1308
|
-
return new Request(url2.href, init);
|
|
1309
|
-
}
|
|
1310
|
-
async function toNodeRequest(res, nodeRes) {
|
|
1311
|
-
nodeRes.statusCode = res.status;
|
|
1312
|
-
if (!nodeRes.req || nodeRes.req.httpVersionMajor < 2) {
|
|
1313
|
-
nodeRes.statusMessage = res.statusText;
|
|
1314
|
-
}
|
|
1315
|
-
let cookiesStrings = [];
|
|
1316
|
-
for (let [name, value] of res.headers) {
|
|
1317
|
-
if (name === "set-cookie") {
|
|
1318
|
-
cookiesStrings.push(...(0, import_set_cookie_parser.splitCookiesString)(value));
|
|
1319
|
-
} else nodeRes.setHeader(name, value);
|
|
1320
|
-
}
|
|
1321
|
-
if (cookiesStrings.length) {
|
|
1322
|
-
nodeRes.setHeader("set-cookie", cookiesStrings);
|
|
1323
|
-
}
|
|
1324
|
-
if (res.body) {
|
|
1325
|
-
let responseBody = res.body;
|
|
1326
|
-
let readable = import_node_stream.Readable.from(responseBody);
|
|
1327
|
-
readable.pipe(nodeRes);
|
|
1328
|
-
await (0, import_node_events.once)(readable, "end");
|
|
1329
|
-
} else {
|
|
1330
|
-
nodeRes.end();
|
|
1331
|
-
}
|
|
1264
|
+
nodeReq.url = nodeReq.originalUrl;
|
|
1265
|
+
return (0, import_node_fetch_server.createRequest)(nodeReq, nodeRes);
|
|
1332
1266
|
}
|
|
1333
1267
|
|
|
1334
1268
|
// vite/styles.ts
|
|
@@ -3480,7 +3414,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3480
3414
|
req2,
|
|
3481
3415
|
await reactRouterDevLoadContext(req2)
|
|
3482
3416
|
);
|
|
3483
|
-
await
|
|
3417
|
+
await (0, import_node_fetch_server2.sendResponse)(nodeRes, res2);
|
|
3484
3418
|
};
|
|
3485
3419
|
await nodeHandler(req, res);
|
|
3486
3420
|
} catch (error) {
|
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-6336d71a9",
|
|
4
4
|
"description": "Dev tools and CLI for React Router",
|
|
5
5
|
"homepage": "https://reactrouter.com",
|
|
6
6
|
"bugs": {
|
|
@@ -64,7 +64,6 @@
|
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"isbot": "^5.1.11",
|
|
68
67
|
"@babel/core": "^7.27.7",
|
|
69
68
|
"@babel/generator": "^7.27.5",
|
|
70
69
|
"@babel/parser": "^7.27.7",
|
|
@@ -73,12 +72,14 @@
|
|
|
73
72
|
"@babel/traverse": "^7.27.7",
|
|
74
73
|
"@babel/types": "^7.27.7",
|
|
75
74
|
"@npmcli/package-json": "^4.0.1",
|
|
75
|
+
"@remix-run/node-fetch-server": "^0.9.0",
|
|
76
76
|
"arg": "^5.0.1",
|
|
77
77
|
"babel-dead-code-elimination": "^1.0.6",
|
|
78
78
|
"chokidar": "^4.0.0",
|
|
79
79
|
"dedent": "^1.5.3",
|
|
80
80
|
"es-module-lexer": "^1.3.1",
|
|
81
81
|
"exit-hook": "2.2.1",
|
|
82
|
+
"isbot": "^5.1.11",
|
|
82
83
|
"jsesc": "3.0.2",
|
|
83
84
|
"lodash": "^4.17.21",
|
|
84
85
|
"pathe": "^1.1.2",
|
|
@@ -86,11 +87,10 @@
|
|
|
86
87
|
"prettier": "^3.6.2",
|
|
87
88
|
"react-refresh": "^0.14.0",
|
|
88
89
|
"semver": "^7.3.7",
|
|
89
|
-
"set-cookie-parser": "^2.6.0",
|
|
90
90
|
"tinyglobby": "^0.2.14",
|
|
91
91
|
"valibot": "^0.41.0",
|
|
92
92
|
"vite-node": "^3.2.2",
|
|
93
|
-
"@react-router/node": "0.0.0-experimental-
|
|
93
|
+
"@react-router/node": "0.0.0-experimental-6336d71a9"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
96
|
"@types/babel__core": "^7.20.5",
|
|
@@ -102,9 +102,8 @@
|
|
|
102
102
|
"@types/lodash": "^4.14.182",
|
|
103
103
|
"@types/node": "^20.0.0",
|
|
104
104
|
"@types/npmcli__package-json": "^4.0.0",
|
|
105
|
-
"@types/set-cookie-parser": "^2.4.1",
|
|
106
105
|
"@types/semver": "^7.7.0",
|
|
107
|
-
"@vitejs/plugin-rsc": "0.4.
|
|
106
|
+
"@vitejs/plugin-rsc": "0.4.30",
|
|
108
107
|
"esbuild-register": "^3.6.0",
|
|
109
108
|
"execa": "5.1.1",
|
|
110
109
|
"express": "^4.19.2",
|
|
@@ -114,16 +113,16 @@
|
|
|
114
113
|
"vite": "^6.1.0",
|
|
115
114
|
"wireit": "0.14.9",
|
|
116
115
|
"wrangler": "^4.23.0",
|
|
117
|
-
"react-router": "^0.0.0-experimental-
|
|
118
|
-
"@react-router/serve": "0.0.0-experimental-
|
|
116
|
+
"react-router": "^0.0.0-experimental-6336d71a9",
|
|
117
|
+
"@react-router/serve": "0.0.0-experimental-6336d71a9"
|
|
119
118
|
},
|
|
120
119
|
"peerDependencies": {
|
|
121
120
|
"@vitejs/plugin-rsc": "*",
|
|
122
121
|
"typescript": "^5.1.0",
|
|
123
122
|
"vite": "^5.1.0 || ^6.0.0 || ^7.0.0",
|
|
124
123
|
"wrangler": "^3.28.2 || ^4.0.0",
|
|
125
|
-
"@react-router/serve": "^0.0.0-experimental-
|
|
126
|
-
"react-router": "^0.0.0-experimental-
|
|
124
|
+
"@react-router/serve": "^0.0.0-experimental-6336d71a9",
|
|
125
|
+
"react-router": "^0.0.0-experimental-6336d71a9"
|
|
127
126
|
},
|
|
128
127
|
"peerDependenciesMeta": {
|
|
129
128
|
"@vitejs/plugin-rsc": {
|