diff options
Diffstat (limited to 'corvos.config.ts')
| -rw-r--r-- | corvos.config.ts | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/corvos.config.ts b/corvos.config.ts new file mode 100644 index 0000000..deae101 --- /dev/null +++ b/corvos.config.ts | |||
| @@ -0,0 +1,80 @@ | |||
| 1 | import "https://deno.land/std@0.224.0/dotenv/load.ts"; | ||
| 2 | import type { Page } from "corvos"; | ||
| 3 | |||
| 4 | import { Pipeline, Site } from "corvos"; | ||
| 5 | import { assets } from "corvos/plugins/assets.ts"; | ||
| 6 | import { brotli } from "corvos/plugins/brotli.ts"; | ||
| 7 | import { cache } from "corvos/plugins/cache.ts"; | ||
| 8 | import { esbuild } from "corvos/plugins/esbuild.ts"; | ||
| 9 | import { feeds } from "corvos/plugins/feeds.ts"; | ||
| 10 | import { gzip } from "corvos/plugins/gzip.ts"; | ||
| 11 | import { hash } from "corvos/plugins/hash.ts"; | ||
| 12 | import { icons } from "corvos/plugins/icons.ts"; | ||
| 13 | import { images } from "corvos/plugins/images.ts"; | ||
| 14 | import { jsx } from "corvos/plugins/jsx.ts"; | ||
| 15 | import { markdown } from "corvos/plugins/markdown.ts"; | ||
| 16 | import { mdx } from "corvos/plugins/mdx.ts"; | ||
| 17 | import { modules } from "corvos/plugins/modules.ts"; | ||
| 18 | import { queryBuilder } from "corvos/plugins/query_builder.ts"; | ||
| 19 | import { sass } from "corvos/plugins/sass.ts"; | ||
| 20 | import { sitemap } from "corvos/plugins/sitemap.ts"; | ||
| 21 | import { templates } from "corvos/plugins/templates.ts"; | ||
| 22 | import { transformImages } from "corvos/plugins/transform_images.ts"; | ||
| 23 | import { urls } from "corvos/plugins/urls.ts"; | ||
| 24 | |||
| 25 | import type { Node } from "$/deps/strapi.tsx"; | ||
| 26 | import type { PageData } from "$/schemas/mod.ts"; | ||
| 27 | |||
| 28 | import { strapi } from "$/deps/strapi.tsx"; | ||
| 29 | import { pageDataSchema } from "$/schemas/mod.ts"; | ||
| 30 | |||
| 31 | const assetPipeline = Pipeline.create() | ||
| 32 | .use(cache()) | ||
| 33 | |||
| 34 | .use(assets()) | ||
| 35 | .use(hash()) | ||
| 36 | |||
| 37 | .use(esbuild()) | ||
| 38 | .use(sass()) | ||
| 39 | .use(icons()) | ||
| 40 | .use( | ||
| 41 | images({ | ||
| 42 | allowedOrigins: ["strapi.volpeon.ink"], | ||
| 43 | defaults: { formats: ["avif", "webp", "png"], densities: [1, 2] }, | ||
| 44 | }), | ||
| 45 | ) | ||
| 46 | .use(transformImages()) | ||
| 47 | |||
| 48 | .use(brotli()) | ||
| 49 | .use(gzip()); | ||
| 50 | |||
| 51 | const pagePipeline = Pipeline.create() | ||
| 52 | // Helpers | ||
| 53 | .use(queryBuilder()) | ||
| 54 | |||
| 55 | // Content | ||
| 56 | .use(modules<Page<".strapi", Node[], PageData> | Page<".", Uint8Array<ArrayBuffer>>>()) | ||
| 57 | .use(markdown({ frontmatterSchema: pageDataSchema })) | ||
| 58 | .use(mdx({ frontmatterSchema: pageDataSchema })) | ||
| 59 | .use(strapi()) | ||
| 60 | .use(jsx()) | ||
| 61 | .use(urls({ base: new URL("https://corvos.volpeon.ink/") })) | ||
| 62 | |||
| 63 | // Page listings | ||
| 64 | .use(feeds<{ type: "releases" }>()) | ||
| 65 | .use(sitemap()) | ||
| 66 | |||
| 67 | // Templates | ||
| 68 | .use(templates()) | ||
| 69 | .use(jsx()) | ||
| 70 | |||
| 71 | .use(brotli()) | ||
| 72 | .use(gzip()); | ||
| 73 | |||
| 74 | const site = new Site({ | ||
| 75 | assetPipeline, | ||
| 76 | pagePipeline, | ||
| 77 | redirects: [[/^\/(scripts|styles)\//, "/assets/"]], | ||
| 78 | }); | ||
| 79 | |||
| 80 | export default site; | ||
