| | |
| | | import { NotFound } from "../../components" |
| | | import { defaultProcessedContent } from "../vfile" |
| | | import { write } from "./helpers" |
| | | import { i18n } from "../../i18n" |
| | | import DepGraph from "../../depgraph" |
| | | |
| | | export const NotFoundPage: QuartzEmitterPlugin = () => { |
| | | const opts: FullPageLayout = { |
| | |
| | | getQuartzComponents() { |
| | | return [Head, Body, pageBody, Footer] |
| | | }, |
| | | async emit(ctx, _content, resources): Promise<FilePath[]> { |
| | | async getDependencyGraph(_ctx, _content, _resources) { |
| | | return new DepGraph<FilePath>() |
| | | }, |
| | | async *emit(ctx, _content, resources) { |
| | | const cfg = ctx.cfg.configuration |
| | | const slug = "404" as FullSlug |
| | | |
| | | const url = new URL(`https://${cfg.baseUrl ?? "example.com"}`) |
| | | const path = url.pathname as FullSlug |
| | | const externalResources = pageResources(path, resources) |
| | | const notFound = i18n(cfg.locale).pages.error.title |
| | | const [tree, vfile] = defaultProcessedContent({ |
| | | slug, |
| | | text: "Not Found", |
| | | description: "Not Found", |
| | | frontmatter: { title: "Not Found", tags: [] }, |
| | | text: notFound, |
| | | description: notFound, |
| | | frontmatter: { title: notFound, tags: [] }, |
| | | }) |
| | | const externalResources = pageResources(path, vfile.data, resources) |
| | | const componentData: QuartzComponentProps = { |
| | | ctx, |
| | | fileData: vfile.data, |
| | | externalResources, |
| | | cfg, |
| | |
| | | allFiles: [], |
| | | } |
| | | |
| | | return [ |
| | | await write({ |
| | | ctx, |
| | | content: renderPage(slug, componentData, opts, externalResources), |
| | | slug, |
| | | ext: ".html", |
| | | }), |
| | | ] |
| | | yield write({ |
| | | ctx, |
| | | content: renderPage(cfg, slug, componentData, opts, externalResources), |
| | | slug, |
| | | ext: ".html", |
| | | }) |
| | | }, |
| | | } |
| | | } |