From a574effb37aba66f01011789148a6293cfffcef6 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 2 Aug 2026 04:18:05 +0000 Subject: [PATCH 1/3] fix(deps): update dependency ejs to v6 Release-Bump: major --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d81f80d..0a49d5e 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@larvit/log": "2.3.0", - "ejs": "3.1.10", + "ejs": "6.0.1", "lucide-static": "1.28.0" }, "devDependencies": { -- 2.52.0 From 4aada6eed90839cf839b783f1c6462cf2401c11e Mon Sep 17 00:00:00 2001 From: lilleman Date: Sun, 2 Aug 2026 14:40:13 +0200 Subject: [PATCH 2/3] Update lockfile for ejs 6.0.1 --- package-lock.json | 78 +++-------------------------------------------- 1 file changed, 5 insertions(+), 73 deletions(-) diff --git a/package-lock.json b/package-lock.json index 68e4e46..f4d1fbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "dependencies": { "@larvit/log": "2.3.0", - "ejs": "3.1.10", + "ejs": "6.0.1", "lucide-static": "1.28.0" }, "devDependencies": { @@ -47,66 +47,16 @@ "undici-types": "~7.18.0" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-6.0.1.tgz", + "integrity": "sha512-UaaM14yby8U3k02ihS1Bmj5Kz2d7CCQM1scxpgs4Mhkq8F1wR2gl3+Ts4h5Ne4Mnt7M9m4Dw7jsuMr3+xO4vZA==", "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, "bin": { "ejs": "bin/cli.js" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/filelist": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", - "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/jake": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.6", - "filelist": "^1.0.4", - "picocolors": "^1.1.1" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" + "node": ">=0.12.18" } }, "node_modules/lucide-static": { @@ -115,24 +65,6 @@ "integrity": "sha512-dC3VJwRFsjEVX7Iaq4rY88pm7Fi2OmOb8P0WRzXsUMgbt7sCmFX8bLhaDBeNW6JdRjuele+jKqqFaam4yr+Ygg==", "license": "ISC" }, - "node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", -- 2.52.0 From 6f6aafad39d2723e01c6416920b1dc7fbccc51c4 Mon Sep 17 00:00:00 2001 From: lilleman Date: Sun, 2 Aug 2026 14:57:07 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Import=20ejs=20as=20default=20export=20?= =?UTF-8?q?=E2=80=94=20the=20v6=20ESM=20build=20exports=20only=20default?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/http/app.ts | 2 +- src/plugin-host/view-resolver.ts | 2 +- src/ui/auth-card.test.ts | 2 +- src/ui/data-table.test.ts | 2 +- src/ui/field.test.ts | 2 +- src/ui/filter-bar.test.ts | 2 +- src/ui/icons.test.ts | 2 +- src/ui/menu.test.ts | 2 +- src/ui/nav-tree.test.ts | 2 +- src/ui/pagination.test.ts | 2 +- src/ui/shell.test.ts | 2 +- src/ui/theme-switch.test.ts | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/http/app.ts b/src/http/app.ts index 47dab8c..81bf0e2 100644 --- a/src/http/app.ts +++ b/src/http/app.ts @@ -2,7 +2,7 @@ import { randomBytes, randomUUID } from "node:crypto"; import { createServer, type IncomingMessage, type Server, type ServerResponse } from "node:http"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; import { type BuiltinRoute, matchBuiltinRoute, type RequestCsrf } from "./builtin-routes.ts"; import { buildPluginChrome, type PageChrome } from "../ui/chrome.ts"; import { buildContext, type RequestContext, type User } from "./context.ts"; diff --git a/src/plugin-host/view-resolver.ts b/src/plugin-host/view-resolver.ts index 4b880d9..fd3747b 100644 --- a/src/plugin-host/view-resolver.ts +++ b/src/plugin-host/view-resolver.ts @@ -5,7 +5,7 @@ // plugin may deliberately shadow a core partial). The router calls this for a `view` RouteResult. import { isAbsolute, join, relative } from "node:path"; -import * as ejs from "ejs"; +import ejs from "ejs"; const CONTROL_CHARS = /[\x00-\x1f]/; diff --git a/src/ui/auth-card.test.ts b/src/ui/auth-card.test.ts index 72a782d..9eb2ffb 100644 --- a/src/ui/auth-card.test.ts +++ b/src/ui/auth-card.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const authCard = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "auth-card.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(authCard, data); diff --git a/src/ui/data-table.test.ts b/src/ui/data-table.test.ts index cfa598c..fc6e31d 100644 --- a/src/ui/data-table.test.ts +++ b/src/ui/data-table.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const dataTable = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "data-table.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(dataTable, data); diff --git a/src/ui/field.test.ts b/src/ui/field.test.ts index 57ac509..cf9e3ec 100644 --- a/src/ui/field.test.ts +++ b/src/ui/field.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const field = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "field.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(field, data); diff --git a/src/ui/filter-bar.test.ts b/src/ui/filter-bar.test.ts index 6a92eb9..6f73f86 100644 --- a/src/ui/filter-bar.test.ts +++ b/src/ui/filter-bar.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const filterBar = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "filter-bar.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(filterBar, data); diff --git a/src/ui/icons.test.ts b/src/ui/icons.test.ts index 12a059c..0587733 100644 --- a/src/ui/icons.test.ts +++ b/src/ui/icons.test.ts @@ -3,7 +3,7 @@ import { readFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; import { ICON_NAMES, buildIconSprite } from "./icons.ts"; const rootDir = join(dirname(fileURLToPath(import.meta.url)), "..", ".."); diff --git a/src/ui/menu.test.ts b/src/ui/menu.test.ts index 7c96eac..98cb0f7 100644 --- a/src/ui/menu.test.ts +++ b/src/ui/menu.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const menu = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "menu.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(menu, data); diff --git a/src/ui/nav-tree.test.ts b/src/ui/nav-tree.test.ts index fbc1a0e..dc08984 100644 --- a/src/ui/nav-tree.test.ts +++ b/src/ui/nav-tree.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const navTree = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "nav-tree.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(navTree, data); diff --git a/src/ui/pagination.test.ts b/src/ui/pagination.test.ts index 5f2d209..8ec234d 100644 --- a/src/ui/pagination.test.ts +++ b/src/ui/pagination.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const pagination = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "pagination.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(pagination, data); diff --git a/src/ui/shell.test.ts b/src/ui/shell.test.ts index ca2a807..45598b8 100644 --- a/src/ui/shell.test.ts +++ b/src/ui/shell.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const shell = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "shell.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(shell, data); diff --git a/src/ui/theme-switch.test.ts b/src/ui/theme-switch.test.ts index d1d25ec..155981e 100644 --- a/src/ui/theme-switch.test.ts +++ b/src/ui/theme-switch.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import { dirname, join } from "node:path"; import { test } from "node:test"; import { fileURLToPath } from "node:url"; -import * as ejs from "ejs"; +import ejs from "ejs"; const themeSwitch = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "views", "partials", "theme-switch.ejs"); const render = (data: Record = {}): Promise => ejs.renderFile(themeSwitch, data); -- 2.52.0