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
68
69
70
71
72
73
74
75
76
77
78
79
80
|
import "https://deno.land/std@0.224.0/dotenv/load.ts";
import type { Page } from "corvos";
import { Pipeline, Site } from "corvos";
import { assets } from "corvos/plugins/assets.ts";
import { brotli } from "corvos/plugins/brotli.ts";
import { cache } from "corvos/plugins/cache.ts";
import { esbuild } from "corvos/plugins/esbuild.ts";
import { feeds } from "corvos/plugins/feeds.ts";
import { gzip } from "corvos/plugins/gzip.ts";
import { hash } from "corvos/plugins/hash.ts";
import { icons } from "corvos/plugins/icons.ts";
import { images } from "corvos/plugins/images.ts";
import { jsx } from "corvos/plugins/jsx.ts";
import { markdown } from "corvos/plugins/markdown.ts";
import { mdx } from "corvos/plugins/mdx.ts";
import { modules } from "corvos/plugins/modules.ts";
import { queryBuilder } from "corvos/plugins/query_builder.ts";
import { sass } from "corvos/plugins/sass.ts";
import { sitemap } from "corvos/plugins/sitemap.ts";
import { templates } from "corvos/plugins/templates.ts";
import { transformImages } from "corvos/plugins/transform_images.ts";
import { urls } from "corvos/plugins/urls.ts";
import type { Node } from "$/deps/strapi.tsx";
import type { PageData } from "$/schemas/mod.ts";
import { strapi } from "$/deps/strapi.tsx";
import { pageDataSchema } from "$/schemas/mod.ts";
const assetPipeline = Pipeline.create()
.use(cache())
.use(assets())
.use(hash())
.use(esbuild())
.use(sass())
.use(icons())
.use(
images({
allowedOrigins: ["strapi.volpeon.ink"],
defaults: { formats: ["avif", "webp", "png"], densities: [1, 2] },
}),
)
.use(transformImages())
.use(brotli())
.use(gzip());
const pagePipeline = Pipeline.create()
// Helpers
.use(queryBuilder())
// Content
.use(modules<Page<".strapi", Node[], PageData> | Page<".", Uint8Array<ArrayBuffer>>>())
.use(markdown({ frontmatterSchema: pageDataSchema }))
.use(mdx({ frontmatterSchema: pageDataSchema }))
.use(strapi())
.use(jsx())
.use(urls({ base: new URL("https://corvos.volpeon.ink/") }))
// Page listings
.use(feeds<{ type: "releases" }>())
.use(sitemap())
// Templates
.use(templates())
.use(jsx())
.use(brotli())
.use(gzip());
const site = new Site({
assetPipeline,
pagePipeline,
redirects: [[/^\/(scripts|styles)\//, "/assets/"]],
});
export default site;
|