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 { sass } from "corvos/plugins/sass.ts"; import { sitemap } from "corvos/plugins/sitemap.ts"; import { templates } from "corvos/plugins/templates.ts"; import { timestamps } from "corvos/plugins/timestamps.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() // 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/") })) // Metadata .use(timestamps()) // Page listings .use(feeds<{ type: "releases" }>()) .use(sitemap()) // Templates .use(templates()) .use(jsx()) .use(brotli()) .use(gzip()); export default new Site({ assetPipeline, pagePipeline, redirects: [[/^\/(scripts|styles)\//, "/assets/"]], });