1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
import NextPageLoader from "next/dist/client/page-loader";
import getAssetPathFromRoute from "next/dist/shared/lib/router/utils/get-asset-path-from-route";
import createRouteLoader from "./route-loader";
export default class PageLoader extends NextPageLoader {
public routeLoader: RouteLoader;
constructor(_, __, pages) {
super(_, __);
// TODO: assetPrefix?
this.routeLoader = createRouteLoader("");
this.pages = pages;
}
getPageList() {
return Object.keys(this.pages);
}
async loadPage(route: string): Promise<GoodPageCache> {
try {
const assets =
globalThis.__NEXT_DATA__.pages[route] ||
globalThis.__NEXT_DATA__.pages[getAssetPathFromRoute(route)];
var src;
console.log(getAssetPathFromRoute(route), assets);
for (let asset of assets) {
if (!asset.endsWith(".css")) {
src = asset;
break;
}
}
console.assert(src, "Invalid or unknown route passed to loadPage");
const res = await import(src);
console.log({ res });
return {
page: res.default,
mod: res,
__N_SSG: false,
__N_SSP: false,
};
} catch (err) {}
// return this.routeLoader.loadRoute(route).then((res) => {
// debugger;
// if ("component" in res) {
// return {
// page: res.component,
// mod: res.exports,
// styleSheets: res.styles.map((o) => ({
// href: o.href,
// text: o.content,
// })),
// };
// }
// throw res.error;
// });
}
// not used in development!
prefetch(route: string): Promise<void> {
return this.routeLoader.prefetch(route);
}
}
|