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:
54
node_modules/astro/dist/runtime/server/endpoint.js
generated
vendored
Normal file
54
node_modules/astro/dist/runtime/server/endpoint.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
import { bold } from "kleur/colors";
|
||||
import { REROUTABLE_STATUS_CODES, REROUTE_DIRECTIVE_HEADER } from "../../core/constants.js";
|
||||
import { EndpointDidNotReturnAResponse } from "../../core/errors/errors-data.js";
|
||||
import { AstroError } from "../../core/errors/errors.js";
|
||||
async function renderEndpoint(mod, context, ssr, logger) {
|
||||
const { request, url } = context;
|
||||
const method = request.method.toUpperCase();
|
||||
const handler = mod[method] ?? mod["ALL"];
|
||||
if (!ssr && ssr === false && method !== "GET") {
|
||||
logger.warn(
|
||||
"router",
|
||||
`${url.pathname} ${bold(
|
||||
method
|
||||
)} requests are not available for a static site. Update your config to \`output: 'server'\` or \`output: 'hybrid'\` to enable.`
|
||||
);
|
||||
}
|
||||
if (handler === void 0) {
|
||||
logger.warn(
|
||||
"router",
|
||||
`No API Route handler exists for the method "${method}" for the route "${url.pathname}".
|
||||
Found handlers: ${Object.keys(mod).map((exp) => JSON.stringify(exp)).join(", ")}
|
||||
` + ("all" in mod ? `One of the exported handlers is "all" (lowercase), did you mean to export 'ALL'?
|
||||
` : "")
|
||||
);
|
||||
return new Response(null, { status: 404 });
|
||||
}
|
||||
if (typeof handler !== "function") {
|
||||
logger.error(
|
||||
"router",
|
||||
`The route "${url.pathname}" exports a value for the method "${method}", but it is of the type ${typeof handler} instead of a function.`
|
||||
);
|
||||
return new Response(null, { status: 500 });
|
||||
}
|
||||
let response = await handler.call(mod, context);
|
||||
if (!response || response instanceof Response === false) {
|
||||
throw new AstroError(EndpointDidNotReturnAResponse);
|
||||
}
|
||||
if (REROUTABLE_STATUS_CODES.includes(response.status)) {
|
||||
try {
|
||||
response.headers.set(REROUTE_DIRECTIVE_HEADER, "no");
|
||||
} catch (err) {
|
||||
if (err.message?.includes("immutable")) {
|
||||
response = new Response(response.body, response);
|
||||
response.headers.set(REROUTE_DIRECTIVE_HEADER, "no");
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
export {
|
||||
renderEndpoint
|
||||
};
|
Reference in New Issue
Block a user