Skip to content

Commit

Permalink
Showing 3 changed files with 4 additions and 24 deletions.
3 changes: 0 additions & 3 deletions src/runtime/core/cache/prerender.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
import { createStorage } from 'unstorage'
import lruCacheDriver from 'unstorage/drivers/lru-cache'
import type { Browser } from 'playwright-core'
import type { OgImageOptions } from '../../types'

export const prerenderOptionsCache = import.meta.prerender
? createStorage<OgImageOptions>({
driver: lruCacheDriver({ max: 1000 }),
})
: undefined

export const prerenderChromiumContext: { browser?: Browser } = { browser: undefined }
16 changes: 3 additions & 13 deletions src/runtime/core/renderers/chromium/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { Browser } from 'playwright-core'
import type { Renderer } from '../../../types'
import { prerenderChromiumContext } from '../../cache/prerender'
import { createScreenshot } from './screenshot'
import { createBrowser } from '#nuxt-og-image/bindings/chromium'

@@ -11,16 +10,8 @@ const ChromiumRenderer: Renderer = {
return {} // TODO
},
async createImage(ctx) {
let browser: Browser = (import.meta.prerender ? prerenderChromiumContext.browser : null) || await createBrowser()
const browser: Browser = await createBrowser()
// check if browser is open
// lets us re-use the browser
if (import.meta.prerender) {
prerenderChromiumContext.browser = browser
// if not, open it
if (!browser.isConnected())
browser = await createBrowser()
}

if (!browser.isConnected()) {
return createError({
statusCode: 400,
@@ -29,9 +20,8 @@ const ChromiumRenderer: Renderer = {
}

// @todo return placeholder image on failure
return createScreenshot(ctx, browser!).finally(async () => {
if (!import.meta.prerender) // closed by
await browser!.close()
return await createScreenshot(ctx, browser!).finally(async () => {
await browser!.close()
})
},
}
9 changes: 1 addition & 8 deletions src/runtime/nitro/plugins/prerender.ts
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ import { createRouter as createRadixRouter, toRouteMatcher } from 'radix3'
import { defu } from 'defu'
import type { NitroRouteRules } from 'nitropack'
import { extractAndNormaliseOgImageOptions } from '../../core/options/extract'
import { prerenderChromiumContext, prerenderOptionsCache } from '../../core/cache/prerender'
import { prerenderOptionsCache } from '../../core/cache/prerender'
import { isInternalRoute } from '../../utils.pure'
import { resolvePathCacheKey } from '../utils'
import { useRuntimeConfig } from '#imports'
@@ -38,11 +38,4 @@ export default defineNitroPlugin(async (nitro) => {
const key = resolvePathCacheKey(ctx.event)
await prerenderOptionsCache!.setItem(key, options)
})
nitro.hooks.hook('close', async () => {
// clean up the browser
if (prerenderChromiumContext.browser) {
await prerenderChromiumContext.browser.close()
prerenderChromiumContext.browser = undefined
}
})
})

0 comments on commit 2e8e2e6

Please sign in to comment.