From ec39667cbac4baf48613dba19e6225cd685579e3 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:07:23 +0300 Subject: [PATCH 01/10] feat(server/session): update database to hold session information --- .../server/src/assets/db/migrations/0231__session_store.sql | 5 +++++ apps/server/src/assets/db/schema.sql | 6 ++++++ apps/server/src/services/app_info.ts | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 apps/server/src/assets/db/migrations/0231__session_store.sql diff --git a/apps/server/src/assets/db/migrations/0231__session_store.sql b/apps/server/src/assets/db/migrations/0231__session_store.sql new file mode 100644 index 000000000..de245d25c --- /dev/null +++ b/apps/server/src/assets/db/migrations/0231__session_store.sql @@ -0,0 +1,5 @@ +CREATE TABLE IF NOT EXISTS sessions ( + id TEXT PRIMARY KEY, + data TEXT, + expires INTEGER +); \ No newline at end of file diff --git a/apps/server/src/assets/db/schema.sql b/apps/server/src/assets/db/schema.sql index 29b749d89..be21bcc3d 100644 --- a/apps/server/src/assets/db/schema.sql +++ b/apps/server/src/assets/db/schema.sql @@ -187,3 +187,9 @@ CREATE TABLE IF NOT EXISTS "embedding_providers" ( "dateModified" TEXT NOT NULL, "utcDateModified" TEXT NOT NULL ); + +CREATE TABLE IF NOT EXISTS sessions ( + id TEXT PRIMARY KEY, + data TEXT, + expires INTEGER +); diff --git a/apps/server/src/services/app_info.ts b/apps/server/src/services/app_info.ts index 60b453f9d..7f70f8bcd 100644 --- a/apps/server/src/services/app_info.ts +++ b/apps/server/src/services/app_info.ts @@ -3,7 +3,7 @@ import build from "./build.js"; import packageJson from "../../package.json" with { type: "json" }; import dataDir from "./data_dir.js"; -const APP_DB_VERSION = 230; +const APP_DB_VERSION = 231; const SYNC_VERSION = 35; const CLIPPER_PROTOCOL_VERSION = "1.0"; From c3770f0dae6d33aaac2004d8435fe8ef0dd4f3ec Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:22:14 +0300 Subject: [PATCH 02/10] chore(server/session): implement session write --- apps/server/src/routes/session_parser.ts | 35 ++++++++++++++++++------ 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/apps/server/src/routes/session_parser.ts b/apps/server/src/routes/session_parser.ts index c674a4890..22cebc81a 100644 --- a/apps/server/src/routes/session_parser.ts +++ b/apps/server/src/routes/session_parser.ts @@ -1,10 +1,32 @@ -import session from "express-session"; -import sessionFileStore from "session-file-store"; +import sql from "../services/sql.js"; +import session, { Store } from "express-session"; import sessionSecret from "../services/session_secret.js"; -import dataDir from "../services/data_dir.js"; import config from "../services/config.js"; -const FileStore = sessionFileStore(session); +class SQLiteSessionStore extends Store { + + get(sid: string, callback: (err: any, session?: session.SessionData | null) => void): void { + return callback(null); + } + + set(id: string, session: session.SessionData, callback?: (err?: any) => void): void { + const expires = Date.now() + 3600000; // Session expiration time (1 hour from now) + const data = JSON.stringify(session); + + sql.upsert("sessions", "id", { + id, + expires, + data + }); + callback?.(); + } + + destroy(sid: string, callback?: (err?: any) => void): void { + console.log("Destroy ", sid); + callback?.(); + } + +} const sessionParser = session({ secret: sessionSecret, @@ -16,10 +38,7 @@ const sessionParser = session({ maxAge: config.Session.cookieMaxAge * 1000 // needs value in milliseconds }, name: "trilium.sid", - store: new FileStore({ - ttl: config.Session.cookieMaxAge, - path: `${dataDir.TRILIUM_DATA_DIR}/sessions` - }) + store: new SQLiteSessionStore() }); export default sessionParser; From dfb8c9f4ce97a4470753c27010aba26dbbfb44af Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:24:17 +0300 Subject: [PATCH 03/10] chore(server/session): implement session destroy --- apps/server/src/routes/session_parser.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/server/src/routes/session_parser.ts b/apps/server/src/routes/session_parser.ts index 22cebc81a..d31ec6283 100644 --- a/apps/server/src/routes/session_parser.ts +++ b/apps/server/src/routes/session_parser.ts @@ -23,6 +23,7 @@ class SQLiteSessionStore extends Store { destroy(sid: string, callback?: (err?: any) => void): void { console.log("Destroy ", sid); + sql.execute(/*sql*/`DELETE FROM sessions WHERE id = ?`, sid); callback?.(); } From b313b0b96592c5b4b128d049e8a4f9b72e68536a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:31:42 +0300 Subject: [PATCH 04/10] chore(server/session): implement session get --- apps/server/src/routes/session_parser.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/server/src/routes/session_parser.ts b/apps/server/src/routes/session_parser.ts index d31ec6283..f2ddea8d8 100644 --- a/apps/server/src/routes/session_parser.ts +++ b/apps/server/src/routes/session_parser.ts @@ -6,7 +6,12 @@ import config from "../services/config.js"; class SQLiteSessionStore extends Store { get(sid: string, callback: (err: any, session?: session.SessionData | null) => void): void { - return callback(null); + const data = sql.getValue(/*sql*/`SELECT data FROM sessions WHERE id = ?`, sid); + let session = null; + if (data) { + session = JSON.parse(data); + } + return callback(null, session); } set(id: string, session: session.SessionData, callback?: (err?: any) => void): void { From 43ab13e12643b1e09b0d1b05731f24d335504fa1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:36:56 +0300 Subject: [PATCH 05/10] refactor(server/session): better error management --- apps/server/src/routes/session_parser.ts | 47 ++++++++++++++++-------- apps/server/src/services/log.ts | 2 +- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/apps/server/src/routes/session_parser.ts b/apps/server/src/routes/session_parser.ts index f2ddea8d8..008da0e87 100644 --- a/apps/server/src/routes/session_parser.ts +++ b/apps/server/src/routes/session_parser.ts @@ -2,34 +2,49 @@ import sql from "../services/sql.js"; import session, { Store } from "express-session"; import sessionSecret from "../services/session_secret.js"; import config from "../services/config.js"; +import log from "../services/log.js"; class SQLiteSessionStore extends Store { get(sid: string, callback: (err: any, session?: session.SessionData | null) => void): void { - const data = sql.getValue(/*sql*/`SELECT data FROM sessions WHERE id = ?`, sid); - let session = null; - if (data) { - session = JSON.parse(data); + try { + const data = sql.getValue(/*sql*/`SELECT data FROM sessions WHERE id = ?`, sid); + let session = null; + if (data) { + session = JSON.parse(data); + } + return callback(null, session); + } catch (e: unknown) { + log.error(e); + return callback(e); } - return callback(null, session); } set(id: string, session: session.SessionData, callback?: (err?: any) => void): void { - const expires = Date.now() + 3600000; // Session expiration time (1 hour from now) - const data = JSON.stringify(session); + try { + const expires = Date.now() + 3600000; // Session expiration time (1 hour from now) + const data = JSON.stringify(session); - sql.upsert("sessions", "id", { - id, - expires, - data - }); - callback?.(); + sql.upsert("sessions", "id", { + id, + expires, + data + }); + callback?.(); + } catch (e) { + log.error(e); + return callback?.(e); + } } destroy(sid: string, callback?: (err?: any) => void): void { - console.log("Destroy ", sid); - sql.execute(/*sql*/`DELETE FROM sessions WHERE id = ?`, sid); - callback?.(); + try { + sql.execute(/*sql*/`DELETE FROM sessions WHERE id = ?`, sid); + callback?.(); + } catch (e) { + log.error(e); + callback?.(e); + } } } diff --git a/apps/server/src/services/log.ts b/apps/server/src/services/log.ts index b84018fbf..f5598b7f6 100644 --- a/apps/server/src/services/log.ts +++ b/apps/server/src/services/log.ts @@ -69,7 +69,7 @@ function info(message: string | Error) { log(message); } -function error(message: string | Error) { +function error(message: string | Error | unknown) { log(`ERROR: ${message}`); } From 15a513d7cd2bc3bd62882a00aa5464508fb1e936 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:44:41 +0300 Subject: [PATCH 06/10] feat(server/session): clean up expired sessions --- apps/server/src/routes/session_parser.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/server/src/routes/session_parser.ts b/apps/server/src/routes/session_parser.ts index 008da0e87..788934819 100644 --- a/apps/server/src/routes/session_parser.ts +++ b/apps/server/src/routes/session_parser.ts @@ -62,4 +62,11 @@ const sessionParser = session({ store: new SQLiteSessionStore() }); +setInterval(() => { + // Clean up expired sesions. + const now = Date.now(); + const result = sql.execute(/*sql*/`DELETE FROM sessions WHERE expires < ?`, now); + console.log("Cleaning up expired sessions: ", result.changes); +}, 60 * 60 * 1000); + export default sessionParser; From afec7918dd5e3ffa64859a824c9508a1230edd64 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:47:39 +0300 Subject: [PATCH 07/10] fix(server/session): respect cookie expiration date --- apps/server/src/routes/session_parser.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/server/src/routes/session_parser.ts b/apps/server/src/routes/session_parser.ts index 788934819..b036657a2 100644 --- a/apps/server/src/routes/session_parser.ts +++ b/apps/server/src/routes/session_parser.ts @@ -22,7 +22,9 @@ class SQLiteSessionStore extends Store { set(id: string, session: session.SessionData, callback?: (err?: any) => void): void { try { - const expires = Date.now() + 3600000; // Session expiration time (1 hour from now) + const expires = session.cookie?.expires + ? new Date(session.cookie.expires).getTime() + : Date.now() + 3600000; // fallback to 1 hour const data = JSON.stringify(session); sql.upsert("sessions", "id", { From c6434729bc5430cf794812728f8860cb912598ae Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:52:58 +0300 Subject: [PATCH 08/10] chore(server/session): get rid of file-session dependency --- apps/server/package.json | 1 - pnpm-lock.yaml | 294 +++++++++++++++------------------------ 2 files changed, 114 insertions(+), 181 deletions(-) diff --git a/apps/server/package.json b/apps/server/package.json index f1f515fec..66cc22b53 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -104,7 +104,6 @@ "sanitize-html": "2.17.0", "sax": "1.4.1", "serve-favicon": "2.5.0", - "session-file-store": "1.5.0", "stream-throttle": "0.1.3", "strip-bom": "5.0.0", "striptags": "3.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afc2a604b..8b6fd8da8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -308,7 +308,7 @@ importers: version: 19.1.5(@types/react@19.1.4) copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + version: 13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) happy-dom: specifier: 17.4.7 version: 17.4.7 @@ -394,7 +394,7 @@ importers: version: 1.0.2 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + version: 13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) electron: specifier: 36.2.1 version: 36.2.1 @@ -447,7 +447,7 @@ importers: version: 11.0.4 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + version: 13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) electron: specifier: 36.2.1 version: 36.2.1 @@ -619,7 +619,7 @@ importers: version: 1.4.7 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + version: 13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) csrf-csrf: specifier: 3.2.2 version: 3.2.2 @@ -755,9 +755,6 @@ importers: serve-favicon: specifier: 2.5.0 version: 2.5.0 - session-file-store: - specifier: 1.5.0 - version: 1.5.0 stream-throttle: specifier: 0.1.3 version: 0.1.3 @@ -790,7 +787,7 @@ importers: version: 1.0.1 webpack: specifier: 5.99.8 - version: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + version: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) ws: specifier: 8.18.2 version: 8.18.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -842,7 +839,7 @@ importers: version: 4.1.0 '@ckeditor/ckeditor5-package-tools': specifier: ^3.0.1 - version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1(webpack@5.98.0)) + version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1) '@typescript-eslint/eslint-plugin': specifier: ~8.32.0 version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) @@ -902,7 +899,7 @@ importers: version: 4.1.0 '@ckeditor/ckeditor5-package-tools': specifier: ^3.0.1 - version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1(webpack@5.98.0)) + version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1) '@typescript-eslint/eslint-plugin': specifier: ~8.32.0 version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) @@ -962,7 +959,7 @@ importers: version: 4.1.0 '@ckeditor/ckeditor5-package-tools': specifier: ^3.0.1 - version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1(webpack@5.98.0)) + version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1) '@typescript-eslint/eslint-plugin': specifier: ~8.32.0 version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) @@ -1023,13 +1020,13 @@ importers: version: 43.0.1(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.8.3) '@ckeditor/ckeditor5-dev-utils': specifier: 43.0.1 - version: 43.0.1(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + version: 43.0.1(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) '@ckeditor/ckeditor5-inspector': specifier: '>=4.1.0' version: 4.1.0 '@ckeditor/ckeditor5-package-tools': specifier: ^3.0.1 - version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1(webpack@5.98.0)) + version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1) '@typescript-eslint/eslint-plugin': specifier: ~8.32.0 version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) @@ -1096,7 +1093,7 @@ importers: version: 4.1.0 '@ckeditor/ckeditor5-package-tools': specifier: ^3.0.1 - version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1(webpack@5.98.0)) + version: 3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1) '@typescript-eslint/eslint-plugin': specifier: ~8.32.0 version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) @@ -6091,9 +6088,6 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -6223,9 +6217,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - bagpipe@0.3.5: - resolution: {integrity: sha512-42sAlmPDKes1nLm/aly+0VdaopSU9br+jkRELedhQxI5uXHgtk47I83Mpmf4zoNTRMASdLFtUkimlu/Z9zQ8+g==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -6322,9 +6313,6 @@ packages: bmp-ts@1.0.9: resolution: {integrity: sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==} - bn.js@4.12.1: - resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} - body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -9338,9 +9326,6 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -9749,10 +9734,6 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - kruptein@2.2.3: - resolution: {integrity: sha512-BTwprBPTzkFT9oTugxKd3WnWrX630MqUDsnmBuoa98eQs12oD4n4TeI0GbpdGcYn/73Xueg2rfnw+oK4dovnJg==} - engines: {node: '>6'} - langium@3.3.1: resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} engines: {node: '>=16.0.0'} @@ -12505,10 +12486,6 @@ packages: resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} engines: {node: '>= 18'} - session-file-store@1.5.0: - resolution: {integrity: sha512-60IZaJNzyu2tIeHutkYE8RiXVx3KRvacOxfLr2Mj92SIsRIroDsH0IlUUR6fJAjoTW4RQISbaOApa2IZpIwFdQ==} - engines: {node: '>= 6'} - set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -13452,9 +13429,6 @@ packages: typed-assert@1.0.9: resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -14150,9 +14124,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -15410,11 +15381,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-dev-translations@45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)))': + '@ckeditor/ckeditor5-dev-translations@45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1))': dependencies: '@babel/parser': 7.27.0 '@babel/traverse': 7.27.0 - '@ckeditor/ckeditor5-dev-utils': 45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + '@ckeditor/ckeditor5-dev-utils': 45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) chalk: 5.4.1 fs-extra: 11.3.0 glob: 10.4.5 @@ -15432,58 +15403,58 @@ snapshots: - uglify-js - webpack - '@ckeditor/ckeditor5-dev-utils@43.0.1(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)))': + '@ckeditor/ckeditor5-dev-utils@43.0.1(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1))': dependencies: '@ckeditor/ckeditor5-dev-translations': 43.0.1 chalk: 3.0.0 cli-cursor: 3.1.0 cli-spinners: 2.9.2 - css-loader: 5.2.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + css-loader: 5.2.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) cssnano: 6.1.2(postcss@8.5.3) del: 5.1.0 - esbuild-loader: 3.0.1(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + esbuild-loader: 3.0.1(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) fs-extra: 11.3.0 is-interactive: 1.0.0 javascript-stringify: 1.6.0 - mini-css-extract-plugin: 2.4.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + mini-css-extract-plugin: 2.4.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) mocha: 7.2.0 postcss: 8.5.3 postcss-import: 14.1.0(postcss@8.5.3) - postcss-loader: 4.3.0(postcss@8.5.3)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + postcss-loader: 4.3.0(postcss@8.5.3)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) postcss-mixins: 9.0.4(postcss@8.5.3) postcss-nesting: 13.0.1(postcss@8.5.3) - raw-loader: 4.0.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + raw-loader: 4.0.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) shelljs: 0.8.5 - style-loader: 2.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) - terser-webpack-plugin: 4.2.3(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + style-loader: 2.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) + terser-webpack-plugin: 4.2.3(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) through2: 3.0.2 transitivePeerDependencies: - bluebird - supports-color - webpack - '@ckeditor/ckeditor5-dev-utils@45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)))': + '@ckeditor/ckeditor5-dev-utils@45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1))': dependencies: - '@ckeditor/ckeditor5-dev-translations': 45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + '@ckeditor/ckeditor5-dev-translations': 45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) chalk: 5.4.1 cli-cursor: 5.0.0 cli-spinners: 3.2.0 - css-loader: 7.1.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + css-loader: 7.1.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) cssnano: 7.0.6(postcss@8.5.3) - esbuild-loader: 4.3.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + esbuild-loader: 4.3.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) fs-extra: 11.3.0 is-interactive: 2.0.0 - mini-css-extract-plugin: 2.4.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + mini-css-extract-plugin: 2.4.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) mocha: 10.8.2 postcss: 8.5.3 postcss-import: 16.1.0(postcss@8.5.3) - postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) postcss-mixins: 11.0.3(postcss@8.5.3) postcss-nesting: 13.0.1(postcss@8.5.3) - raw-loader: 4.0.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + raw-loader: 4.0.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) shelljs: 0.8.5 - style-loader: 4.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) - terser-webpack-plugin: 5.3.14(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + style-loader: 4.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) + terser-webpack-plugin: 5.3.14(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) through2: 4.0.2 transitivePeerDependencies: - '@rspack/core' @@ -15764,29 +15735,29 @@ snapshots: '@ckeditor/ckeditor5-utils': 45.1.0 ckeditor5: 45.1.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - '@ckeditor/ckeditor5-package-tools@3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1(webpack@5.98.0))': + '@ckeditor/ckeditor5-package-tools@3.0.1(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(bufferutil@4.0.9)(esbuild@0.25.4)(utf-8-validate@6.0.5)(webpack-cli@6.0.1)': dependencies: - '@ckeditor/ckeditor5-dev-translations': 45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) - '@ckeditor/ckeditor5-dev-utils': 45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + '@ckeditor/ckeditor5-dev-translations': 45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) + '@ckeditor/ckeditor5-dev-utils': 45.0.10(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) buffer: 6.0.3 chalk: 5.4.1 - css-loader: 5.2.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + css-loader: 5.2.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) fs-extra: 11.3.0 glob: 7.2.3 minimist: 1.2.8 postcss: 8.5.3 - postcss-loader: 4.3.0(postcss@8.5.3)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + postcss-loader: 4.3.0(postcss@8.5.3)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) process: 0.11.10 - raw-loader: 4.0.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) - style-loader: 2.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + raw-loader: 4.0.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) + style-loader: 2.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) stylelint: 16.19.1(typescript@5.0.4) stylelint-config-ckeditor5: 2.0.1(stylelint@16.19.1(typescript@5.8.3)) - terser-webpack-plugin: 5.3.14(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) - ts-loader: 9.5.2(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + terser-webpack-plugin: 5.3.14(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) + ts-loader: 9.5.2(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) ts-node: 10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@22.15.18)(typescript@5.0.4) typescript: 5.0.4 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) - webpack-dev-server: 5.2.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack-cli@6.0.1(webpack@5.98.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) + webpack-dev-server: 5.2.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack-cli@6.0.1)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) transitivePeerDependencies: - '@rspack/core' - '@swc/core' @@ -16403,7 +16374,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -17916,7 +17887,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.1 + semver: 7.7.2 '@npmcli/fs@4.0.0': dependencies: @@ -20815,13 +20786,6 @@ snapshots: asap@2.0.6: {} - asn1.js@5.4.1: - dependencies: - bn.js: 4.12.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - assertion-error@2.0.1: {} ast-types@0.13.4: @@ -20989,8 +20953,6 @@ snapshots: babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) - bagpipe@0.3.5: {} - balanced-match@1.0.2: {} balanced-match@2.0.0: {} @@ -21077,8 +21039,6 @@ snapshots: bmp-ts@1.0.9: {} - bn.js@4.12.1: {} - body-parser@1.20.3: dependencies: bytes: 3.1.2 @@ -21784,14 +21744,14 @@ snapshots: serialize-javascript: 6.0.2 webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) - copy-webpack-plugin@13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + copy-webpack-plugin@13.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 tinyglobby: 0.2.13 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) core-js-compat@3.41.0: dependencies: @@ -21904,7 +21864,7 @@ snapshots: css-functions-list@3.2.3: {} - css-loader@5.2.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + css-loader@5.2.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: icss-utils: 5.1.0(postcss@8.5.3) loader-utils: 2.0.4 @@ -21916,7 +21876,7 @@ snapshots: postcss-value-parser: 4.2.0 schema-utils: 3.3.0 semver: 7.7.1 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) css-loader@6.11.0(webpack@5.98.0): dependencies: @@ -21931,7 +21891,7 @@ snapshots: optionalDependencies: webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) - css-loader@7.1.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + css-loader@7.1.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: icss-utils: 5.1.0(postcss@8.5.3) postcss: 8.5.3 @@ -21942,7 +21902,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) css-minimizer-webpack-plugin@5.0.1(esbuild@0.25.4)(webpack@5.98.0): dependencies: @@ -22984,20 +22944,20 @@ snapshots: es6-promise@4.2.8: {} - esbuild-loader@3.0.1(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + esbuild-loader@3.0.1(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: esbuild: 0.17.19 get-tsconfig: 4.10.0 loader-utils: 2.0.4 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) webpack-sources: 1.4.3 - esbuild-loader@4.3.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + esbuild-loader@4.3.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: esbuild: 0.25.3 get-tsconfig: 4.10.0 loader-utils: 2.0.4 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) webpack-sources: 1.4.3 esbuild@0.17.19: @@ -24742,8 +24702,6 @@ snapshots: dependencies: which-typed-array: 1.1.19 - is-typedarray@1.0.0: {} - is-unicode-supported@0.1.0: {} is-url@1.2.4: {} @@ -25380,10 +25338,6 @@ snapshots: kolorist@1.8.0: {} - kruptein@2.2.3: - dependencies: - asn1.js: 5.4.1 - langium@3.3.1: dependencies: chevrotain: 11.0.3 @@ -26021,10 +25975,10 @@ snapshots: schema-utils: 4.3.2 webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) - mini-css-extract-plugin@2.4.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + mini-css-extract-plugin@2.4.7(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: schema-utils: 4.3.2 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) minimalistic-assert@1.0.1: {} @@ -27127,7 +27081,7 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.3 - postcss-loader@4.3.0(postcss@8.5.3)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + postcss-loader@4.3.0(postcss@8.5.3)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 @@ -27135,7 +27089,7 @@ snapshots: postcss: 8.5.3 schema-utils: 3.3.0 semver: 7.7.1 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) postcss-loader@6.2.1(postcss@8.5.3)(webpack@5.98.0): dependencies: @@ -27145,14 +27099,14 @@ snapshots: semver: 7.7.1 webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) - postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: cosmiconfig: 9.0.0(typescript@5.0.4) jiti: 1.21.7 postcss: 8.5.3 semver: 7.7.2 optionalDependencies: - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) transitivePeerDependencies: - typescript @@ -27733,11 +27687,11 @@ snapshots: raw-loader@0.5.1: {} - raw-loader@4.0.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + raw-loader@4.0.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) rc@1.2.8: dependencies: @@ -28491,15 +28445,6 @@ snapshots: transitivePeerDependencies: - supports-color - session-file-store@1.5.0: - dependencies: - bagpipe: 0.3.5 - fs-extra: 8.1.0 - kruptein: 2.2.3 - object-assign: 4.1.1 - retry: 0.12.0 - write-file-atomic: 3.0.3 - set-blocking@2.0.0: {} set-function-length@1.2.2: @@ -28953,19 +28898,19 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 5.4.2 - style-loader@2.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + style-loader@2.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) style-loader@3.3.4(webpack@5.98.0): dependencies: webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) - style-loader@4.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + style-loader@4.0.0(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) style-mod@4.1.2: {} @@ -29326,7 +29271,7 @@ snapshots: rimraf: 2.6.3 optional: true - terser-webpack-plugin@4.2.3(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + terser-webpack-plugin@4.2.3(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: cacache: 15.3.0 find-cache-dir: 3.3.2 @@ -29336,7 +29281,7 @@ snapshots: serialize-javascript: 5.0.1 source-map: 0.6.1 terser: 5.39.0 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) webpack-sources: 1.4.3 transitivePeerDependencies: - bluebird @@ -29353,14 +29298,14 @@ snapshots: '@swc/core': 1.11.24(@swc/helpers@0.5.17) esbuild: 0.25.4 - terser-webpack-plugin@5.3.14(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + terser-webpack-plugin@5.3.14(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) optionalDependencies: '@swc/core': 1.11.24(@swc/helpers@0.5.17) esbuild: 0.25.4 @@ -29518,7 +29463,7 @@ snapshots: ts-dedent@2.2.0: {} - ts-loader@9.5.2(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + ts-loader@9.5.2(typescript@5.0.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: chalk: 4.1.2 enhanced-resolve: 5.18.1 @@ -29526,7 +29471,7 @@ snapshots: semver: 7.7.1 source-map: 0.7.4 typescript: 5.0.4 - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) ts-loader@9.5.2(typescript@5.8.3)(webpack@5.98.0): dependencies: @@ -29710,10 +29655,6 @@ snapshots: typed-assert@1.0.9: {} - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - typedarray@0.0.6: {} typescript-eslint@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): @@ -30230,7 +30171,7 @@ snapshots: optionalDependencies: webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) - webpack-dev-middleware@7.4.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): + webpack-dev-middleware@7.4.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -30239,46 +30180,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.2 optionalDependencies: - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) - - webpack-dev-server@5.2.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack-cli@6.0.1(webpack@5.98.0))(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/express-serve-static-core': 4.19.6 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.18.1 - ansi-html-community: 0.0.8 - bonjour-service: 1.3.0 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.8.0 - connect-history-api-fallback: 2.0.0 - express: 4.21.2 - graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.21) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.1 - p-retry: 6.2.1 - schema-utils: 4.3.2 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) - ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) - optionalDependencies: - webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)) - webpack-cli: 6.0.1(webpack@5.98.0) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) webpack-dev-server@5.2.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack-cli@6.0.1)(webpack@5.98.0): dependencies: @@ -30319,6 +30221,45 @@ snapshots: - supports-color - utf-8-validate + webpack-dev-server@5.2.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack-cli@6.0.1)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/express-serve-static-core': 4.19.6 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.0 + connect-history-api-fallback: 2.0.0 + express: 4.21.2 + graceful-fs: 4.2.11 + http-proxy-middleware: 2.0.9(@types/express@4.17.21) + ipaddr.js: 2.2.0 + launch-editor: 2.10.0 + open: 10.1.1 + p-retry: 6.2.1 + schema-utils: 4.3.2 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + optionalDependencies: + webpack: 5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack@5.98.0) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + webpack-merge@6.0.1: dependencies: clone-deep: 4.0.1 @@ -30376,7 +30317,7 @@ snapshots: - esbuild - uglify-js - webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0)): + webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -30399,7 +30340,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1(webpack@5.98.0))) + terser-webpack-plugin: 5.3.14(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack@5.99.8(@swc/core@1.11.24(@swc/helpers@0.5.17))(esbuild@0.25.4)(webpack-cli@6.0.1)) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: @@ -30565,13 +30506,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@3.0.3: - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 From df27cf4c7783a49ca3fb568842f9003a54eace9e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:56:18 +0300 Subject: [PATCH 09/10] chore(release): mention session change --- docs/Release Notes/Release Notes/v0.94.0.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Release Notes/Release Notes/v0.94.0.md b/docs/Release Notes/Release Notes/v0.94.0.md index e24c6a4f4..424423eff 100644 --- a/docs/Release Notes/Release Notes/v0.94.0.md +++ b/docs/Release Notes/Release Notes/v0.94.0.md @@ -20,6 +20,7 @@ * [Inconsistent Find and Replace Behavior in Large Code Notes](https://github.com/TriliumNext/Notes/issues/1826) by @SiriusXT * [Incorrect import of multiple inline math](https://github.com/TriliumNext/Notes/pull/1906) by @SiriusXT +* [Random EPERM: operation not permitted on Windows](https://github.com/TriliumNext/Notes/issues/249) ## ✨ Improvements @@ -40,7 +41,8 @@ * [Added support for opening and activating a note in a new tab using Ctrl+Shift+click on notes in the launcher pane, note tree, or note images](https://github.com/TriliumNext/Notes/pull/1854) by @SiriusXT * [Style and footnote improvements](https://github.com/TriliumNext/Notes/pull/1913) by @SiriusXT * Backend log: disable some editor features in order to increase performance for large logs (syntax highlighting, folding, etc.). -* [Collapsible table of contents](https://github.com/TriliumNext/Notes/pull/1954) by @SriiusXT +* [Collapsible table of contents](https://github.com/TriliumNext/Notes/pull/1954) by @SiriusXT +* Sessions (logins) are no longer stored as files in the data directory, but as entries in the database. This improves the session reliability on Windows platforms. ## 📖 Documentation From efc526947497dfb7e243215a6945d8a1d3bbd752 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 May 2025 18:58:18 +0300 Subject: [PATCH 10/10] fix(test): import errors due to session parser --- apps/server/src/app.ts | 3 ++- apps/server/src/www.ts | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index 43170e0bd..9c35c6aed 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -4,7 +4,6 @@ import favicon from "serve-favicon"; import cookieParser from "cookie-parser"; import helmet from "helmet"; import compression from "compression"; -import sessionParser from "./routes/session_parser.js"; import config from "./services/config.js"; import utils, { getResourceDir } from "./services/utils.js"; import assets from "./routes/assets.js"; @@ -111,6 +110,8 @@ export default async function buildApp() { app.use(`/manifest.webmanifest`, express.static(path.join(publicAssetsDir, "manifest.webmanifest"))); app.use(`/robots.txt`, express.static(path.join(publicAssetsDir, "robots.txt"))); app.use(`/icon.png`, express.static(path.join(publicAssetsDir, "icon.png"))); + + const sessionParser = (await import("./routes/session_parser.js")).default; app.use(sessionParser); app.use(favicon(path.join(assetsDir, "icon.ico"))); diff --git a/apps/server/src/www.ts b/apps/server/src/www.ts index 3261a80e3..4d2e0b412 100644 --- a/apps/server/src/www.ts +++ b/apps/server/src/www.ts @@ -1,6 +1,4 @@ #!/usr/bin/env node - -import sessionParser from "./routes/session_parser.js"; import fs from "fs"; import http from "http"; import https from "https"; @@ -79,6 +77,7 @@ async function startTrilium() { const httpServer = startHttpServer(app); + const sessionParser = (await import("./routes/session_parser.js")).default; ws.init(httpServer, sessionParser as any); // TODO: Not sure why session parser is incompatible. if (utils.isElectron) {