Refactor routing in App component to enhance navigation and improve error handling by integrating dynamic routes and updating the NotFound route.
This commit is contained in:
74
node_modules/astro/dist/vite-plugin-astro-server/controller.js
generated
vendored
Normal file
74
node_modules/astro/dist/vite-plugin-astro-server/controller.js
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
import {
|
||||
clearRouteError,
|
||||
createServerState,
|
||||
setRouteError,
|
||||
setServerError
|
||||
} from "./server-state.js";
|
||||
function createController(params) {
|
||||
if ("loader" in params) {
|
||||
return createLoaderController(params.loader);
|
||||
} else {
|
||||
return createBaseController(params);
|
||||
}
|
||||
}
|
||||
function createBaseController({ reload }) {
|
||||
const serverState = createServerState();
|
||||
const onFileChange = () => {
|
||||
if (serverState.state === "error") {
|
||||
reload();
|
||||
}
|
||||
};
|
||||
const onHMRError = (payload) => {
|
||||
let msg = payload?.err?.message ?? "Unknown error";
|
||||
let stack = payload?.err?.stack ?? "Unknown stack";
|
||||
let error = new Error(msg);
|
||||
Object.defineProperty(error, "stack", {
|
||||
value: stack
|
||||
});
|
||||
setServerError(serverState, error);
|
||||
};
|
||||
return {
|
||||
state: serverState,
|
||||
onFileChange,
|
||||
onHMRError
|
||||
};
|
||||
}
|
||||
function createLoaderController(loader) {
|
||||
const controller = createBaseController({
|
||||
reload() {
|
||||
loader.clientReload();
|
||||
}
|
||||
});
|
||||
const baseOnFileChange = controller.onFileChange;
|
||||
controller.onFileChange = (...args) => {
|
||||
if (controller.state.state === "error") {
|
||||
loader.eachModule((mod) => {
|
||||
if (mod.ssrError) {
|
||||
loader.invalidateModule(mod);
|
||||
}
|
||||
});
|
||||
}
|
||||
baseOnFileChange(...args);
|
||||
};
|
||||
loader.events.on("file-change", controller.onFileChange);
|
||||
loader.events.on("hmr-error", controller.onHMRError);
|
||||
return controller;
|
||||
}
|
||||
async function runWithErrorHandling({
|
||||
controller: { state },
|
||||
pathname,
|
||||
run,
|
||||
onError
|
||||
}) {
|
||||
try {
|
||||
await run();
|
||||
clearRouteError(state, pathname);
|
||||
} catch (err) {
|
||||
const error = onError(err);
|
||||
setRouteError(state, pathname, error);
|
||||
}
|
||||
}
|
||||
export {
|
||||
createController,
|
||||
runWithErrorHandling
|
||||
};
|
Reference in New Issue
Block a user