78 lines
2.5 KiB
TypeScript
78 lines
2.5 KiB
TypeScript
import type { FutureConfig as RouterFutureConfig } from "@remix-run/router";
|
|
import type { FutureConfig as RenderFutureConfig } from "./components";
|
|
|
|
const alreadyWarned: { [key: string]: boolean } = {};
|
|
|
|
export function warnOnce(key: string, message: string): void {
|
|
if (__DEV__ && !alreadyWarned[message]) {
|
|
alreadyWarned[message] = true;
|
|
console.warn(message);
|
|
}
|
|
}
|
|
|
|
const logDeprecation = (flag: string, msg: string, link: string) =>
|
|
warnOnce(
|
|
flag,
|
|
`⚠️ React Router Future Flag Warning: ${msg}. ` +
|
|
`You can use the \`${flag}\` future flag to opt-in early. ` +
|
|
`For more information, see ${link}.`
|
|
);
|
|
|
|
export function logV6DeprecationWarnings(
|
|
renderFuture: Partial<RenderFutureConfig> | undefined,
|
|
routerFuture?: Omit<RouterFutureConfig, "v7_prependBasename">
|
|
) {
|
|
if (renderFuture?.v7_startTransition === undefined) {
|
|
logDeprecation(
|
|
"v7_startTransition",
|
|
"React Router will begin wrapping state updates in `React.startTransition` in v7",
|
|
"https://reactrouter.com/v6/upgrading/future#v7_starttransition"
|
|
);
|
|
}
|
|
|
|
if (
|
|
renderFuture?.v7_relativeSplatPath === undefined &&
|
|
(!routerFuture || routerFuture.v7_relativeSplatPath === undefined)
|
|
) {
|
|
logDeprecation(
|
|
"v7_relativeSplatPath",
|
|
"Relative route resolution within Splat routes is changing in v7",
|
|
"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath"
|
|
);
|
|
}
|
|
|
|
if (routerFuture) {
|
|
if (routerFuture.v7_fetcherPersist === undefined) {
|
|
logDeprecation(
|
|
"v7_fetcherPersist",
|
|
"The persistence behavior of fetchers is changing in v7",
|
|
"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist"
|
|
);
|
|
}
|
|
|
|
if (routerFuture.v7_normalizeFormMethod === undefined) {
|
|
logDeprecation(
|
|
"v7_normalizeFormMethod",
|
|
"Casing of `formMethod` fields is being normalized to uppercase in v7",
|
|
"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod"
|
|
);
|
|
}
|
|
|
|
if (routerFuture.v7_partialHydration === undefined) {
|
|
logDeprecation(
|
|
"v7_partialHydration",
|
|
"`RouterProvider` hydration behavior is changing in v7",
|
|
"https://reactrouter.com/v6/upgrading/future#v7_partialhydration"
|
|
);
|
|
}
|
|
|
|
if (routerFuture.v7_skipActionErrorRevalidation === undefined) {
|
|
logDeprecation(
|
|
"v7_skipActionErrorRevalidation",
|
|
"The revalidation behavior after 4xx/5xx `action` responses is changing in v7",
|
|
"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation"
|
|
);
|
|
}
|
|
}
|
|
}
|