UNPKG

@gasket/plugin-nextjs

Version:
53 lines (52 loc) 1.74 kB
/// <reference types="@gasket/plugin-fastify" /> Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _setupnextapp = require("./utils/setup-next-app.cjs"); /** * Adds the buildId to Fastify via `decorate` * @param {import('fastify').FastifyInstance} fastifyApp * Fastify application instance * @param {any} app - Next.js application instance (Next.js doesn't expose public types for server instances) */ function registerBuildId(fastifyApp, app) { const buildIdKey = [ 'buildId', app.name ].filter(Boolean).join('/'); fastifyApp.decorate(buildIdKey, app.buildId); } /** * Adds the `onResponse` hook to set NEXT_LOCALE * @param {import('fastify').FastifyInstance} fastifyApp * Fastify application instance */ function addNextLocaleHook(fastifyApp) { fastifyApp.addHook('onResponse', function setNextLocale(req, res, next) { const locale = /** @type {any} */ res?.locals?.gasketData?.intl?.locale; if (locale) { req.headers.cookie = (req.headers.cookie || '') + `;NEXT_LOCALE=${locale}`; } next(); }); } /** @type {import('@gasket/core').HookHandler<'fastify'>} */ async function fastifyHandler(gasket, fastifyApp) { const app = await (0, _setupnextapp.setupNextApp)(gasket); registerBuildId(fastifyApp, app); await gasket.exec('nextFastify', { next: app, fastify: fastifyApp }); addNextLocaleHook(fastifyApp); (0, _setupnextapp.setupNextHandling)(app, fastifyApp, gasket); } const _default = { timing: { last: true }, handler: fastifyHandler };