From e7a0c91a37ee7262ca5a6b6b9ce18e21925654ab Mon Sep 17 00:00:00 2001 From: makearmy Date: Sun, 12 Oct 2025 22:31:26 -0400 Subject: [PATCH] build fixes for middleware --- middleware.ts | 55 +++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/middleware.ts b/middleware.ts index 036fdf62..11e15db8 100644 --- a/middleware.ts +++ b/middleware.ts @@ -186,18 +186,16 @@ import { NextResponse, NextRequest } from "next/server"; // NOTE: We intentionally DO NOT remap `/lasers/:id` and `/projects/:id` // so the portal iframes can load those canonical pages without recursion. const detailRules: Array<[RegExp, (m: RegExpExecArray) => MapResult]> = [ - // Laser settings - [/^\/fiber-settings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/laser-settings", query: { t: "fiber", id: m[1] } })], - [/^\/uv-settings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/laser-settings", query: { t: "uv", id: m[1] } })], - [/^\/co2-galvo-settings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/laser-settings", query: { t: "co2-galvo", id: m[1] } })], - [/^\/co2-gantry-settings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/laser-settings", query: { t: "co2-gantry", id: m[1] } })], + // Laser settings (detail) + [/^\/fiber-settings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/laser-settings", query: { t: "fiber", id: m[1] } })], + [/^\/uv-settings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/laser-settings", query: { t: "uv", id: m[1] } })], + [/^\/co2-galvo-settings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/laser-settings", query: { t: "co2-galvo", id: m[1] } })], + [/^\/co2-gantry-settings\/([^/]+)\/?$/i,(m) => ({ pathname: "/portal/laser-settings", query: { t: "co2-gantry", id: m[1] } })], [/^\/co2gantry-settings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/laser-settings", query: { t: "co2-gantry", id: m[1] } })], - [/^\/laser-toolkit\/?$/i, { pathname: "/portal/utilities", query: { t: "laser-toolkit" } }], - [/^\/files\/?$/i, { pathname: "/portal/utilities", query: { t: "files" } }], - // Materials - [/^\/materials\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/materials", query: { t: "materials", id: m[1] } })], - [/^\/materials-coatings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/materials", query: { t: "materials-coatings", id: m[1] } })], + // Materials (detail) + [/^\/materials\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/materials", query: { t: "materials", id: m[1] } })], + [/^\/materials-coatings\/([^/]+)\/?$/i, (m) => ({ pathname: "/portal/materials", query: { t: "materials-coatings", id: m[1] } })], ]; for (const [re, to] of detailRules) { const m = re.exec(pathname); @@ -209,28 +207,29 @@ import { NextResponse, NextRequest } from "next/server"; // ── Canonicals for direct, public URLs ─────────────────────────────────── // https://makearmy.io/background-remover → /portal/utilities?t=background-remover [/^\/background-remover\/?$/i, { pathname: "/portal/utilities", query: { t: "background-remover" } }], + // https://makearmy.io/laser-toolkit → /portal/utilities?t=laser-toolkit + [/^\/laser-toolkit\/?$/i, { pathname: "/portal/utilities", query: { t: "laser-toolkit" } }], + // https://makearmy.io/files → /portal/utilities?t=files + [/^\/files\/?$/i, { pathname: "/portal/utilities", query: { t: "files" } }], + // https://makearmy.io/buying-guide → /portal/buying-guide + [/^\/buying-guide\/?$/i, { pathname: "/portal/buying-guide" }], - // https://makearmy.io/buying-guide → /portal/buying-guide - [/^\/buying-guide\/?$/i, { pathname: "/portal/buying-guide" }], + // Laser settings (lists) + [/^\/fiber-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "fiber" } }], + [/^\/uv-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "uv" } }], + [/^\/co2-galvo-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-galvo" } }], + [/^\/co2-ganry-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-gantry" } }], // typo catch + [/^\/co2-gantry-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-gantry" } }], + [/^\/co2gantry-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-gantry" } }], // old alias - // ── Existing rules (keep your current ones below) ──────────────────────── - // Laser settings lists - [/^\/fiber-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "fiber" } }], - [/^\/uv-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "uv" } }], - [/^\/co2-galvo-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-galvo" } }], - [/^\/co2-ganry-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-gantry" } }], // typo catch - [/^\/co2-gantry-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-gantry" } }], - [/^\/co2ganry-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-gantry" } }], // typo catch variant (if needed) - [/^\/co2gantry-settings\/?$/i, { pathname: "/portal/laser-settings", query: { t: "co2-gantry" } }], // old alias - - // Materials lists - [/^\/materials\/?$/i, { pathname: "/portal/materials", query: { t: "materials" } }], - [/^\/materials\/materials\/?$/i, { pathname: "/portal/materials", query: { t: "materials" } }], + // Materials (lists) + [/^\/materials\/?$/i, { pathname: "/portal/materials", query: { t: "materials" } }], + [/^\/materials\/materials\/?$/i, { pathname: "/portal/materials", query: { t: "materials" } }], [/^\/materials\/materials-coatings\/?$/i, { pathname: "/portal/materials", query: { t: "materials-coatings" } }], - [/^\/materials-coatings\/?$/i, { pathname: "/portal/materials", query: { t: "materials-coatings" } }], + [/^\/materials-coatings\/?$/i, { pathname: "/portal/materials", query: { t: "materials-coatings" } }], - // Other lists - [/^\/lasers\/?$/i, { pathname: "/portal/laser-sources" }], + // Other lists/sections + [/^\/lasers\/?$/i, { pathname: "/portal/laser-sources" }], [/^\/projects\/?$/i, { pathname: "/portal/projects" }], [/^\/my\/rigs\/?$/i, { pathname: "/portal/rigs", query: { t: "my" } }], ];