diff --git a/nuxt.config.ts b/nuxt.config.ts index 1f09d342..29f118aa 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,3 +1,4 @@ +import type { InputPluginOption } from 'rollup' export default defineNuxtConfig({ $production: { experimental: { @@ -31,6 +32,22 @@ export default defineNuxtConfig({ }, hooks: { + // TODO: this is a hack that we surely do not need + 'nitro:config'(config) { + ;(config.rollupConfig!.plugins as InputPluginOption[]).push({ + name: 'purge-the-handler', + transform(_code, id) { + if (id.includes('og/[slug]')) { + return 'export default defineEventHandler(() => {})' + } + }, + }) + }, + 'nitro:init'(nitro) { + nitro.options._config.rollupConfig!.plugins = ( + nitro.options._config.rollupConfig!.plugins as InputPluginOption[] + ).filter(p => !p || !('name' in p) || p.name !== 'purge-the-handler') + }, 'vite:extendConfig'(config, { isClient }) { if (isClient) { config.define!['process.env.prerender'] = 'false' diff --git a/src/server/utils/_chromium.ts b/src/server/open-graph/chromium.ts similarity index 100% rename from src/server/utils/_chromium.ts rename to src/server/open-graph/chromium.ts diff --git a/src/server/utils/_file.ts b/src/server/open-graph/file.ts similarity index 100% rename from src/server/utils/_file.ts rename to src/server/open-graph/file.ts diff --git a/src/server/open-graph/index.ts b/src/server/open-graph/index.ts new file mode 100644 index 00000000..215842de --- /dev/null +++ b/src/server/open-graph/index.ts @@ -0,0 +1,5 @@ +export { getHtml } from './template' +export { parseReqs } from './parser' +export type { ParsedReqs } from './parser' +export { writeTempFile } from './file' +export { getScreenshot } from './chromium' diff --git a/src/server/utils/_parser.ts b/src/server/open-graph/parser.ts similarity index 100% rename from src/server/utils/_parser.ts rename to src/server/open-graph/parser.ts diff --git a/src/server/utils/_template.ts b/src/server/open-graph/template.ts similarity index 98% rename from src/server/utils/_template.ts rename to src/server/open-graph/template.ts index 7fbbcda2..5a44d210 100644 --- a/src/server/utils/_template.ts +++ b/src/server/open-graph/template.ts @@ -1,4 +1,4 @@ -import { ParsedReqs } from './_parser' +import { ParsedReqs } from './parser' function getCss() { return ` diff --git a/src/server/routes/og/[slug].get.ts b/src/server/routes/og/[slug].get.ts index f1c50009..43ae8531 100644 --- a/src/server/routes/og/[slug].get.ts +++ b/src/server/routes/og/[slug].get.ts @@ -1,7 +1,10 @@ -import { parseReqs, ParsedReqs } from '../../utils/_parser' -import { getHtml } from '../../utils/_template' -import { writeTempFile } from '../../utils/_file' -import { getScreenshot } from '../../utils/_chromium' +import type { ParsedReqs } from '../../open-graph/index' +import { + parseReqs, + getHtml, + writeTempFile, + getScreenshot, +} from '../../open-graph/index' const isDev = process.env.VERCEL_ENV === 'development'