From c3f549666af873d7ea6cc5f306dd6f2c4464e048 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 28 Mar 2025 14:04:41 +0000 Subject: [PATCH 1/2] Small improvement to remove middleware and licensing from loading static assets, these are public anyway. --- packages/server/src/api/controllers/assets.ts | 5 +++++ packages/server/src/api/controllers/static/index.ts | 5 ----- packages/server/src/api/index.ts | 6 ++++++ packages/server/src/api/routes/static.ts | 1 - 4 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 packages/server/src/api/controllers/assets.ts diff --git a/packages/server/src/api/controllers/assets.ts b/packages/server/src/api/controllers/assets.ts new file mode 100644 index 0000000000..c1bc455086 --- /dev/null +++ b/packages/server/src/api/controllers/assets.ts @@ -0,0 +1,5 @@ +// this is a public endpoint with no middlewares +export const serveBuilderAssets = async function (ctx: Ctx) { + const builderPath = join(TOP_LEVEL_PATH, "builder") + await send(ctx, ctx.file, { root: builderPath }) +} diff --git a/packages/server/src/api/controllers/static/index.ts b/packages/server/src/api/controllers/static/index.ts index 3d30e601db..aac4ec5d84 100644 --- a/packages/server/src/api/controllers/static/index.ts +++ b/packages/server/src/api/controllers/static/index.ts @@ -76,11 +76,6 @@ export const toggleBetaUiFeature = async function ( } } -export const serveBuilder = async function (ctx: Ctx) { - const builderPath = join(TOP_LEVEL_PATH, "builder") - await send(ctx, ctx.file, { root: builderPath }) -} - export const uploadFile = async function ( ctx: Ctx ) { diff --git a/packages/server/src/api/index.ts b/packages/server/src/api/index.ts index 53be2b30a9..276bb7e209 100644 --- a/packages/server/src/api/index.ts +++ b/packages/server/src/api/index.ts @@ -8,6 +8,7 @@ import { middleware as pro } from "@budibase/pro" import { apiEnabled, automationsEnabled } from "../features" import migrations from "../middleware/appMigrations" import { automationQueue } from "../automations" +import { serveBuilderAssets } from "./controllers/assets" export { shutdown } from "./routes/public" const compress = require("koa-compress") @@ -44,6 +45,11 @@ if (apiEnabled()) { ) // re-direct before any middlewares occur .redirect("/", "/builder") + + // send assets before middleware + router.get("/builder/:file*", serveBuilderAssets) + + router .use( auth.buildAuthMiddleware([], { publicAllowed: true, diff --git a/packages/server/src/api/routes/static.ts b/packages/server/src/api/routes/static.ts index f331609923..8b921e7ba7 100644 --- a/packages/server/src/api/routes/static.ts +++ b/packages/server/src/api/routes/static.ts @@ -29,7 +29,6 @@ router.param("file", async (file: any, ctx: any, next: any) => { }) router - .get("/builder/:file*", controller.serveBuilder) .get("/api/assets/client", controller.serveClientLibrary) .post("/api/attachments/process", authorized(BUILDER), controller.uploadFile) .post("/api/beta/:feature", controller.toggleBetaUiFeature) From e8ae9960b2f4742480f6f3fb17a22d96982e9114 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 28 Mar 2025 14:35:56 +0000 Subject: [PATCH 2/2] Build fix. --- packages/server/src/api/controllers/assets.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/server/src/api/controllers/assets.ts b/packages/server/src/api/controllers/assets.ts index c1bc455086..31e615a074 100644 --- a/packages/server/src/api/controllers/assets.ts +++ b/packages/server/src/api/controllers/assets.ts @@ -1,3 +1,8 @@ +import { join } from "../../utilities/centralPath" +import { TOP_LEVEL_PATH } from "../../utilities/fileSystem" +import { Ctx } from "@budibase/types" +import send from "koa-send" + // this is a public endpoint with no middlewares export const serveBuilderAssets = async function (ctx: Ctx) { const builderPath = join(TOP_LEVEL_PATH, "builder")