From c1e28224aa2e1450031669d9a7e359b63e04687d Mon Sep 17 00:00:00 2001 From: Volpeon Date: Wed, 22 Jul 2026 19:40:59 +0200 Subject: Init --- corvos.config.ts | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 corvos.config.ts (limited to 'corvos.config.ts') 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 @@ +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<".", Uint8Array>>()) + .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; -- cgit v1.3.1