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:
8
node_modules/astro/dist/prerender/metadata.d.ts
generated
vendored
Normal file
8
node_modules/astro/dist/prerender/metadata.d.ts
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
import type { ModuleInfo, ModuleLoader } from '../core/module-loader/index.js';
|
||||
type GetPrerenderStatusParams = {
|
||||
filePath: URL;
|
||||
loader: ModuleLoader;
|
||||
};
|
||||
export declare function getPrerenderStatus({ filePath, loader, }: GetPrerenderStatusParams): boolean | undefined;
|
||||
export declare function getPrerenderMetadata(moduleInfo: ModuleInfo): any;
|
||||
export {};
|
18
node_modules/astro/dist/prerender/metadata.js
generated
vendored
Normal file
18
node_modules/astro/dist/prerender/metadata.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import { viteID } from "../core/util.js";
|
||||
function getPrerenderStatus({
|
||||
filePath,
|
||||
loader
|
||||
}) {
|
||||
const fileID = viteID(filePath);
|
||||
const moduleInfo = loader.getModuleInfo(fileID);
|
||||
if (!moduleInfo) return;
|
||||
const prerenderStatus = getPrerenderMetadata(moduleInfo);
|
||||
return prerenderStatus;
|
||||
}
|
||||
function getPrerenderMetadata(moduleInfo) {
|
||||
return moduleInfo?.meta?.astro?.pageOptions?.prerender;
|
||||
}
|
||||
export {
|
||||
getPrerenderMetadata,
|
||||
getPrerenderStatus
|
||||
};
|
14
node_modules/astro/dist/prerender/routing.d.ts
generated
vendored
Normal file
14
node_modules/astro/dist/prerender/routing.d.ts
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
import type { AstroSettings, ComponentInstance, RouteData } from '../@types/astro.js';
|
||||
import type { DevPipeline } from '../vite-plugin-astro-server/pipeline.js';
|
||||
type GetSortedPreloadedMatchesParams = {
|
||||
pipeline: DevPipeline;
|
||||
matches: RouteData[];
|
||||
settings: AstroSettings;
|
||||
};
|
||||
export declare function getSortedPreloadedMatches({ pipeline, matches, settings, }: GetSortedPreloadedMatchesParams): Promise<PreloadAndSetPrerenderStatusResult[]>;
|
||||
type PreloadAndSetPrerenderStatusResult = {
|
||||
filePath: URL;
|
||||
route: RouteData;
|
||||
preloadedComponent: ComponentInstance;
|
||||
};
|
||||
export {};
|
57
node_modules/astro/dist/prerender/routing.js
generated
vendored
Normal file
57
node_modules/astro/dist/prerender/routing.js
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
import { RedirectComponentInstance, routeIsRedirect } from "../core/redirects/index.js";
|
||||
import { routeComparator } from "../core/routing/priority.js";
|
||||
import { getPrerenderStatus } from "./metadata.js";
|
||||
async function getSortedPreloadedMatches({
|
||||
pipeline,
|
||||
matches,
|
||||
settings
|
||||
}) {
|
||||
return (await preloadAndSetPrerenderStatus({
|
||||
pipeline,
|
||||
matches,
|
||||
settings
|
||||
})).sort((a, b) => routeComparator(a.route, b.route)).sort((a, b) => prioritizePrerenderedMatchesComparator(a.route, b.route));
|
||||
}
|
||||
async function preloadAndSetPrerenderStatus({
|
||||
pipeline,
|
||||
matches,
|
||||
settings
|
||||
}) {
|
||||
const preloaded = new Array();
|
||||
for (const route of matches) {
|
||||
const filePath = new URL(`./${route.component}`, settings.config.root);
|
||||
if (routeIsRedirect(route)) {
|
||||
preloaded.push({
|
||||
preloadedComponent: RedirectComponentInstance,
|
||||
route,
|
||||
filePath
|
||||
});
|
||||
continue;
|
||||
}
|
||||
const preloadedComponent = await pipeline.preload(route, filePath);
|
||||
const prerenderStatus = getPrerenderStatus({
|
||||
filePath,
|
||||
loader: pipeline.loader
|
||||
});
|
||||
if (prerenderStatus !== void 0) {
|
||||
route.prerender = prerenderStatus;
|
||||
}
|
||||
preloaded.push({ preloadedComponent, route, filePath });
|
||||
}
|
||||
return preloaded;
|
||||
}
|
||||
function prioritizePrerenderedMatchesComparator(a, b) {
|
||||
if (areRegexesEqual(a.pattern, b.pattern)) {
|
||||
if (a.prerender !== b.prerender) {
|
||||
return a.prerender ? -1 : 1;
|
||||
}
|
||||
return a.component < b.component ? -1 : 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function areRegexesEqual(regexp1, regexp2) {
|
||||
return regexp1.source === regexp2.source && regexp1.global === regexp2.global;
|
||||
}
|
||||
export {
|
||||
getSortedPreloadedMatches
|
||||
};
|
6
node_modules/astro/dist/prerender/utils.d.ts
generated
vendored
Normal file
6
node_modules/astro/dist/prerender/utils.d.ts
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
import type { AstroConfig } from '../@types/astro.js';
|
||||
export declare function getPrerenderDefault(config: AstroConfig): boolean;
|
||||
/**
|
||||
* Returns the correct output directory of the SSR build based on the configuration
|
||||
*/
|
||||
export declare function getOutputDirectory(config: AstroConfig): URL;
|
17
node_modules/astro/dist/prerender/utils.js
generated
vendored
Normal file
17
node_modules/astro/dist/prerender/utils.js
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
import { getOutDirWithinCwd } from "../core/build/common.js";
|
||||
import { isServerLikeOutput } from "../core/util.js";
|
||||
function getPrerenderDefault(config) {
|
||||
return config.output !== "server";
|
||||
}
|
||||
function getOutputDirectory(config) {
|
||||
const ssr = isServerLikeOutput(config);
|
||||
if (ssr) {
|
||||
return config.build.server;
|
||||
} else {
|
||||
return getOutDirWithinCwd(config.outDir);
|
||||
}
|
||||
}
|
||||
export {
|
||||
getOutputDirectory,
|
||||
getPrerenderDefault
|
||||
};
|
Reference in New Issue
Block a user