UNPKG

@aziontech/opennextjs-azion

Version:
60 lines (59 loc) 2.67 kB
import logger from "@opennextjs/aws/logger.js"; /** * Ensures open next is configured for azion. * * @param config OpenNext configuration. */ export function ensureAzionConfig(config) { const mwIsMiddlewareExternal = config.middleware?.external === true; const mwConfig = mwIsMiddlewareExternal ? config.middleware : undefined; const requirements = { // TODO: in the future move to the open-next aws package dftUseAzionWrapper: typeof config.default?.override?.wrapper === "function", dftUseEdgeConverter: config.default?.override?.converter === "edge", dftUseFetchProxy: config.default?.override?.proxyExternalRequest === "fetch", dftMaybeUseCache: config.default?.override?.incrementalCache === "dummy" || typeof config.default?.override?.incrementalCache === "function", dftMaybeUseTagCache: config.default?.override?.tagCache === "dummy" || typeof config.default?.override?.incrementalCache === "function", dftMaybeUseQueue: config.default?.override?.queue === "dummy" || config.default?.override?.queue === "direct" || typeof config.default?.override?.queue === "function", // Check for the middleware function mwIsMiddlewareExternal, mwUseCloudflareWrapper: true, mwUseEdgeConverter: mwConfig?.override?.converter === "edge", mwUseFetchProxy: mwConfig?.override?.proxyExternalRequest === "fetch", hasCryptoExternal: config.edgeExternals?.includes("node:crypto"), }; if (config.default?.override?.queue === "direct") { logger.warn("The direct mode queue is not recommended for use in production."); } if (Object.values(requirements).some((satisfied) => !satisfied)) { throw new Error("The `open-next.config.ts` should have a default export like this:\n\n" + `{ default: { override: { wrapper: "function", converter: "edge", proxyExternalRequest: "fetch", incrementalCache: "dummy" | function, tagCache: "dummy", queue: "dummy" | "direct" | function, }, }, edgeExternals: ["node:crypto"], middleware: { external: true, override: { wrapper: "azion-wrapper-edge", converter: "edge", proxyExternalRequest: "fetch", incrementalCache: "dummy" | function, tagCache: "dummy" | function, queue: "dummy" | "direct" | function, }, }, }\n\n`.replace(/^ {8}/gm, "")); } }