From 3c6860394799052ad79dce46c3a882a96b076a39 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Mon, 28 Oct 2024 10:33:48 +0100 Subject: [PATCH] refactor: code cleanup --- .../open-next/src/build/createMiddleware.ts | 6 +----- .../open-next/src/build/createServerBundle.ts | 18 +++++++----------- .../src/build/edge/createEdgeBundle.ts | 9 ++------- packages/open-next/src/core/routing/matcher.ts | 5 +++-- packages/open-next/src/core/routingHandler.ts | 2 +- packages/open-next/src/plugins/replacement.ts | 2 +- 6 files changed, 15 insertions(+), 27 deletions(-) diff --git a/packages/open-next/src/build/createMiddleware.ts b/packages/open-next/src/build/createMiddleware.ts index 8bda908b8..bfa845cf5 100644 --- a/packages/open-next/src/build/createMiddleware.ts +++ b/packages/open-next/src/build/createMiddleware.ts @@ -31,17 +31,13 @@ export async function createMiddleware(options: buildHelper.BuildOptions) { return { useMiddleware: false }; } - // Create output folder - let outputPath = path.join(outputDir, "server-function"); - const commonMiddlewareOptions = { middlewareInfo: entry, options, - appBuildOutputPath, }; if (config.middleware?.external) { - outputPath = path.join(outputDir, "middleware"); + const outputPath = path.join(outputDir, "middleware"); fs.mkdirSync(outputPath, { recursive: true }); // Copy open-next.config.mjs diff --git a/packages/open-next/src/build/createServerBundle.ts b/packages/open-next/src/build/createServerBundle.ts index 695211679..29e33a05d 100644 --- a/packages/open-next/src/build/createServerBundle.ts +++ b/packages/open-next/src/build/createServerBundle.ts @@ -2,11 +2,7 @@ import fs from "node:fs"; import { createRequire } from "node:module"; import path from "node:path"; -import type { - FunctionOptions, - OpenNextConfig, - SplittedFunctionOptions, -} from "types/open-next"; +import type { FunctionOptions, SplittedFunctionOptions } from "types/open-next"; import logger from "../logger.js"; import { minifyAll } from "../minimize-js.js"; @@ -40,9 +36,9 @@ export async function createServerBundle(options: buildHelper.BuildOptions) { const routes = fnOptions.routes; routes.forEach((route) => foundRoutes.add(route)); if (fnOptions.runtime === "edge") { - await generateEdgeBundle(name, config, options, fnOptions); + await generateEdgeBundle(name, options, fnOptions); } else { - await generateBundle(name, config, options, fnOptions); + await generateBundle(name, options, fnOptions); } }); @@ -53,7 +49,7 @@ export async function createServerBundle(options: buildHelper.BuildOptions) { const remainingRoutes = new Set(); - const { monorepoRoot, appBuildOutputPath } = options; + const { appBuildOutputPath, monorepoRoot } = options; const packagePath = path.relative(monorepoRoot, appBuildOutputPath); @@ -104,7 +100,7 @@ export async function createServerBundle(options: buildHelper.BuildOptions) { } // Generate default function - await generateBundle("default", config, options, { + await generateBundle("default", options, { ...defaultFn, // @ts-expect-error - Those string are RouteTemplate routes: Array.from(remainingRoutes), @@ -114,11 +110,11 @@ export async function createServerBundle(options: buildHelper.BuildOptions) { async function generateBundle( name: string, - config: OpenNextConfig, options: buildHelper.BuildOptions, fnOptions: SplittedFunctionOptions, ) { - const { appPath, appBuildOutputPath, outputDir, monorepoRoot } = options; + const { appPath, appBuildOutputPath, config, outputDir, monorepoRoot } = + options; logger.info(`Building server function: ${name}...`); // Create output folder diff --git a/packages/open-next/src/build/edge/createEdgeBundle.ts b/packages/open-next/src/build/edge/createEdgeBundle.ts index f0787707d..dd9b7d19a 100644 --- a/packages/open-next/src/build/edge/createEdgeBundle.ts +++ b/packages/open-next/src/build/edge/createEdgeBundle.ts @@ -6,7 +6,6 @@ import path from "path"; import type { MiddlewareInfo, MiddlewareManifest } from "types/next-types"; import type { IncludedConverter, - OpenNextConfig, OverrideOptions, RouteTemplate, SplittedFunctionOptions, @@ -20,7 +19,6 @@ import type { BuildOptions } from "../helper.js"; import { copyOpenNextConfig, esbuildAsync } from "../helper.js"; interface BuildEdgeBundleOptions { - appBuildOutputPath: string; middlewareInfo: MiddlewareInfo; entrypoint: string; outfile: string; @@ -34,7 +32,6 @@ interface BuildEdgeBundleOptions { } export async function buildEdgeBundle({ - appBuildOutputPath, middlewareInfo, entrypoint, outfile, @@ -95,7 +92,7 @@ export async function buildEdgeBundle({ }), openNextEdgePlugins({ middlewareInfo, - nextDir: path.join(appBuildOutputPath, ".next"), + nextDir: path.join(options.appBuildOutputPath, ".next"), edgeFunctionHandlerPath: path.join( options.openNextDistDir, "core", @@ -165,7 +162,6 @@ export function copyMiddlewareAssetsAndWasm({}) {} export async function generateEdgeBundle( name: string, - config: OpenNextConfig, options: BuildOptions, fnOptions: SplittedFunctionOptions, ) { @@ -218,7 +214,6 @@ export async function generateEdgeBundle( } await buildEdgeBundle({ - appBuildOutputPath, middlewareInfo: fn, entrypoint: path.join( options.openNextDistDir, @@ -228,6 +223,6 @@ export async function generateEdgeBundle( outfile: path.join(outputPath, "index.mjs"), options, overrides: fnOptions.override, - additionalExternals: config.edgeExternals, + additionalExternals: options.config.edgeExternals, }); } diff --git a/packages/open-next/src/core/routing/matcher.ts b/packages/open-next/src/core/routing/matcher.ts index ad8989fed..81537b403 100644 --- a/packages/open-next/src/core/routing/matcher.ts +++ b/packages/open-next/src/core/routing/matcher.ts @@ -346,8 +346,9 @@ export function fixDataPage( } if (rawPath.startsWith(dataPattern) && rawPath.endsWith(".json")) { - let newPath = rawPath.replace(dataPattern, "").replace(/\.json$/, ""); - newPath = newPath === "/index" ? "/" : newPath; + const newPath = rawPath + .slice(dataPattern.length, -".json".length) + .replace(/^\/index$/, "/"); query.__nextDataReq = "1"; return { diff --git a/packages/open-next/src/core/routingHandler.ts b/packages/open-next/src/core/routingHandler.ts index f8f292a15..95a11e944 100644 --- a/packages/open-next/src/core/routingHandler.ts +++ b/packages/open-next/src/core/routingHandler.ts @@ -73,7 +73,7 @@ function applyMiddlewareHeaders( export default async function routingHandler( event: InternalEvent, ): Promise { - const nextHeaders = addNextConfigHeaders(event, ConfigHeaders) ?? {}; + const nextHeaders = addNextConfigHeaders(event, ConfigHeaders); let internalEvent = fixDataPage(event, BuildId); if ("statusCode" in internalEvent) { diff --git a/packages/open-next/src/plugins/replacement.ts b/packages/open-next/src/plugins/replacement.ts index 089444b37..55beb52cd 100644 --- a/packages/open-next/src/plugins/replacement.ts +++ b/packages/open-next/src/plugins/replacement.ts @@ -23,7 +23,7 @@ const importPattern = /\/\/#import([\s\S]*?)\n\/\/#endImport/gm; * deletes: ["id1"], * }) * - * To inject arbritary code by using (import at top of file): + * To inject arbitrary code by using (import at top of file): * * //#import *