Skip to content

Commit

Permalink
Clean redundant ?client-route=1 usage in dev (#11542)
Browse files Browse the repository at this point in the history
  • Loading branch information
markdalgleish committed May 9, 2024
1 parent c1403da commit 94d9734
Showing 1 changed file with 20 additions and 27 deletions.
47 changes: 20 additions & 27 deletions packages/remix-dev/vite/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,11 @@ const CLIENT_ROUTE_EXPORTS = [
"shouldRevalidate",
];

// The "=1" suffix ensures client route requests can be processed before hitting
// the Vite plugin since "?client-route" can be serialized as "?client-route="
const CLIENT_ROUTE_QUERY_STRING = "?client-route=1";
/** This is used to manage a build optimization to remove unused route exports
from the client build output. This is important in cases where custom route
exports are only ever used on the server. Without this optimization we can't
tree-shake any unused custom exports because routes are entry points. */
const BUILD_CLIENT_ROUTE_QUERY_STRING = "?__remix-build-client-route";

export type ServerBundleBuildConfig = {
routes: RouteManifest;
Expand Down Expand Up @@ -185,10 +187,6 @@ const getHash = (source: BinaryLike, maxLength?: number): string => {
return typeof maxLength === "number" ? hash.slice(0, maxLength) : hash;
};

const isClientRoute = (id: string): boolean => {
return id.endsWith(CLIENT_ROUTE_QUERY_STRING);
};

const resolveChunk = (
ctx: ReactRouterPluginContext,
viteManifest: Vite.Manifest,
Expand All @@ -199,7 +197,7 @@ const resolveChunk = (
path.relative(ctx.rootDirectory, absoluteFilePath)
);
let entryChunk =
viteManifest[rootRelativeFilePath + CLIENT_ROUTE_QUERY_STRING] ??
viteManifest[rootRelativeFilePath + BUILD_CLIENT_ROUTE_QUERY_STRING] ??
viteManifest[rootRelativeFilePath];

if (!entryChunk) {
Expand Down Expand Up @@ -673,7 +671,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = (_config) => {
`${resolveFileUrl(
ctx,
resolveRelativeRouteFilePath(route, ctx.reactRouterConfig)
)}${CLIENT_ROUTE_QUERY_STRING}`
)}`
),
hasAction: sourceExports.includes("action"),
hasLoader: sourceExports.includes("loader"),
Expand Down Expand Up @@ -848,7 +846,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = (_config) => {
`${path.resolve(
ctx.reactRouterConfig.appDirectory,
route.file
)}${CLIENT_ROUTE_QUERY_STRING}`
)}${BUILD_CLIENT_ROUTE_QUERY_STRING}`
),
],
},
Expand Down Expand Up @@ -981,8 +979,8 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = (_config) => {
cssModulesManifest[id] = code;
}

if (isClientRoute(id)) {
let routeModuleId = id.replace(CLIENT_ROUTE_QUERY_STRING, "");
if (id.endsWith(BUILD_CLIENT_ROUTE_QUERY_STRING)) {
let routeModuleId = id.replace(BUILD_CLIENT_ROUTE_QUERY_STRING, "");
let sourceExports = await getRouteModuleExports(
viteChildCompiler,
ctx,
Expand Down Expand Up @@ -1414,10 +1412,6 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = (_config) => {
let useFastRefresh = !ssr && (isJSX || code.includes(devRuntime));
if (!useFastRefresh) return;

if (isClientRoute(id)) {
return { code: addRefreshWrapper(ctx.reactRouterConfig, code, id) };
}

let result = await babel.transformAsync(code, {
babelrc: false,
configFile: false,
Expand Down Expand Up @@ -1514,17 +1508,16 @@ function addRefreshWrapper(
id: string
): string {
let route = getRoute(reactRouterConfig, id);
let acceptExports =
route || isClientRoute(id)
? [
"clientAction",
"clientLoader",
"handle",
"meta",
"links",
"shouldRevalidate",
]
: [];
let acceptExports = route
? [
"clientAction",
"clientLoader",
"handle",
"meta",
"links",
"shouldRevalidate",
]
: [];
return (
REACT_REFRESH_HEADER.replaceAll("__SOURCE__", JSON.stringify(id)) +
code +
Expand Down

0 comments on commit 94d9734

Please sign in to comment.