From 229772122828df1dd690e6b066c9fcbb48eb70b5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 16:36:55 +0300 Subject: [PATCH 01/85] chore(dx): get rid of nx --- package.json | 18 +- patches/@nx__js.patch | 17 - pnpm-lock.yaml | 3825 +---------------------------------------- 3 files changed, 65 insertions(+), 3795 deletions(-) delete mode 100644 patches/@nx__js.patch diff --git a/package.json b/package.json index 049b21810..726a1260e 100644 --- a/package.json +++ b/package.json @@ -27,16 +27,6 @@ "private": true, "devDependencies": { "@electron/rebuild": "4.0.1", - "@nx/devkit": "21.3.11", - "@nx/esbuild": "21.3.11", - "@nx/eslint": "21.3.11", - "@nx/eslint-plugin": "21.3.11", - "@nx/express": "21.3.11", - "@nx/js": "21.3.11", - "@nx/node": "21.3.11", - "@nx/playwright": "21.3.11", - "@nx/vite": "21.3.11", - "@nx/web": "21.3.11", "@playwright/test": "^1.36.0", "@triliumnext/server": "workspace:*", "@types/express": "^5.0.0", @@ -55,7 +45,6 @@ "jiti": "2.5.1", "jsdom": "~26.1.0", "jsonc-eslint-parser": "^2.1.0", - "nx": "21.3.11", "react-refresh": "^0.17.0", "rollup-plugin-webpack-stats": "2.1.4", "tslib": "^2.3.0", @@ -86,8 +75,7 @@ "patchedDependencies": { "@ckeditor/ckeditor5-mention": "patches/@ckeditor__ckeditor5-mention.patch", "@ckeditor/ckeditor5-code-block": "patches/@ckeditor__ckeditor5-code-block.patch", - "ckeditor5": "patches/ckeditor5.patch", - "@nx/js": "patches/@nx__js.patch" + "ckeditor5": "patches/ckeditor5.patch" }, "overrides": { "mermaid": "11.10.1", @@ -120,11 +108,7 @@ "esbuild", "fs-xattr", "macos-alias", - "nx", "utf-8-validate" ] - }, - "nx": { - "name": "triliumnext" } } diff --git a/patches/@nx__js.patch b/patches/@nx__js.patch deleted file mode 100644 index eb9a069f5..000000000 --- a/patches/@nx__js.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/src/utils/assets/copy-assets-handler.js b/src/utils/assets/copy-assets-handler.js -index 6b68205d833ce9e8277283ac31230c020d2921ec..2f0a7f018b03eae3b8f3ce1a4cf4790aaafed677 100644 ---- a/src/utils/assets/copy-assets-handler.js -+++ b/src/utils/assets/copy-assets-handler.js -@@ -39,12 +39,6 @@ class CopyAssetsHandler { - this.callback = opts.callback ?? exports.defaultFileEventHandler; - // TODO(jack): Should handle nested .gitignore files - this.ignore = (0, ignore_1.default)(); -- const gitignore = pathPosix.join(opts.rootDir, '.gitignore'); -- const nxignore = pathPosix.join(opts.rootDir, '.nxignore'); -- if ((0, node_fs_1.existsSync)(gitignore)) -- this.ignore.add((0, node_fs_1.readFileSync)(gitignore).toString()); -- if ((0, node_fs_1.existsSync)(nxignore)) -- this.ignore.add((0, node_fs_1.readFileSync)(nxignore).toString()); - this.assetGlobs = opts.assets.map((f) => { - let isGlob = false; - let pattern; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aba6dc787..28ecfa66d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,9 +28,6 @@ patchedDependencies: '@ckeditor/ckeditor5-mention': hash: 5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d path: patches/@ckeditor__ckeditor5-mention.patch - '@nx/js': - hash: 7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7 - path: patches/@nx__js.patch ckeditor5: hash: 8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41 path: patches/ckeditor5.patch @@ -42,36 +39,6 @@ importers: '@electron/rebuild': specifier: 4.0.1 version: 4.0.1 - '@nx/devkit': - specifier: 21.3.11 - version: 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/esbuild': - specifier: 21.3.11 - version: 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.9)(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/eslint': - specifier: 21.3.11 - version: 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/eslint-plugin': - specifier: 21.3.11 - version: 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.9.2) - '@nx/express': - specifier: 21.3.11 - version: 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@9.34.0(jiti@2.5.1))(express@4.21.2)(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2))(typescript@5.9.2) - '@nx/js': - specifier: 21.3.11 - version: 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/node': - specifier: 21.3.11 - version: 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2))(typescript@5.9.2) - '@nx/playwright': - specifier: 21.3.11 - version: 21.3.11(@babel/traverse@7.28.0)(@playwright/test@1.55.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.9.2) - '@nx/vite': - specifier: 21.3.11 - version: 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4) - '@nx/web': - specifier: 21.3.11 - version: 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) '@playwright/test': specifier: ^1.36.0 version: 1.55.0 @@ -126,9 +93,6 @@ importers: jsonc-eslint-parser: specifier: ^2.1.0 version: 2.4.0 - nx: - specifier: 21.3.11 - version: 21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)) react-refresh: specifier: ^0.17.0 version: 0.17.0 @@ -330,7 +294,7 @@ importers: version: 6.2.10 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.100.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.9)) + version: 13.0.1(webpack@5.100.2(esbuild@0.25.9)) happy-dom: specifier: 18.0.1 version: 18.0.1 @@ -412,7 +376,7 @@ importers: version: 1.0.2 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.100.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.9)) + version: 13.0.1(webpack@5.100.2(esbuild@0.25.9)) electron: specifier: 37.4.0 version: 37.4.0 @@ -477,7 +441,7 @@ importers: version: 11.0.4 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.100.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.9)) + version: 13.0.1(webpack@5.100.2(esbuild@0.25.9)) electron: specifier: 37.4.0 version: 37.4.0 @@ -1583,10 +1547,6 @@ packages: resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} - engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -1595,31 +1555,10 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.27.0': - resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.27.0': - resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.4': - resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.25.9': - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} @@ -1630,30 +1569,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.25.9': - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.25.9': - resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.26.5': - resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -1666,10 +1585,6 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.25.9': - resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} @@ -1684,385 +1599,12 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': - resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': - resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': - resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': - resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': - resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-decorators@7.25.9': - resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-decorators@7.25.9': - resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.26.0': - resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.25.9': - resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.26.8': - resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.25.9': - resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.26.5': - resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.27.0': - resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.25.9': - resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.26.0': - resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.25.9': - resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.25.9': - resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.25.9': - resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.25.9': - resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.25.9': - resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.25.9': - resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.26.3': - resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.25.9': - resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.26.9': - resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.25.9': - resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.25.9': - resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.25.9': - resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.25.9': - resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.25.9': - resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.25.9': - resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.26.3': - resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.25.9': - resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.25.9': - resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.25.9': - resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': - resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.25.9': - resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.25.9': - resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.25.9': - resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.25.9': - resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.25.9': - resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.25.9': - resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.25.9': - resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.25.9': - resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.25.9': - resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-development@7.27.1': resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} engines: {node: '>=6.9.0'} @@ -2075,107 +1617,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.27.0': - resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regexp-modifiers@7.26.0': - resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-reserved-words@7.25.9': - resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-runtime@7.26.10': - resolution: {integrity: sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.25.9': - resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.25.9': - resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.25.9': - resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.26.8': - resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.27.0': - resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.27.0': - resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.25.9': - resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.25.9': - resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.25.9': - resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9': - resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.26.9': - resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-typescript@7.27.0': - resolution: {integrity: sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.27.6': resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} @@ -2204,9 +1645,6 @@ packages: resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} engines: {node: '>=6.9.0'} - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -3380,87 +2818,10 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@30.0.5': - resolution: {integrity: sha512-xY6b0XiL0Nav3ReresUarwl2oIz1gTnxGbGpho9/rbUWsLH0f1OD/VT84xs8c7VmH7MChnLb0pag6PhZhAdDiA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/diff-sequences@30.0.1': - resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/environment@30.0.5': - resolution: {integrity: sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/expect-utils@30.0.5': - resolution: {integrity: sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/expect@30.0.5': - resolution: {integrity: sha512-6udac8KKrtTtC+AXZ2iUN/R7dp7Ydry+Fo6FPFnDG54wjVMnb6vW/XNlf7Xj8UDjAE3aAVAsR4KFyKk3TCXmTA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/fake-timers@30.0.5': - resolution: {integrity: sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/get-type@30.0.1': - resolution: {integrity: sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/globals@30.0.5': - resolution: {integrity: sha512-7oEJT19WW4oe6HR7oLRvHxwlJk2gev0U9px3ufs8sX9PoD1Eza68KF0/tlN7X0dq/WVsBScXQGgCldA1V9Y/jA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/pattern@30.0.1': - resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/reporters@30.0.5': - resolution: {integrity: sha512-mafft7VBX4jzED1FwGC1o/9QUM2xebzavImZMeqnsklgcyxBto8mV4HzNSzUrryJ+8R9MFOM3HgYuDradWR+4g==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@30.0.5': - resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/snapshot-utils@30.0.5': - resolution: {integrity: sha512-XcCQ5qWHLvi29UUrowgDFvV4t7ETxX91CbDczMnoqXPOIcZOxyNdSjm6kV5XMc8+HkxfRegU/MUmnTbJRzGrUQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/source-map@30.0.1': - resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/test-result@30.0.5': - resolution: {integrity: sha512-wPyztnK0gbDMQAJZ43tdMro+qblDHH1Ru/ylzUo21TBKqt88ZqnKKK2m30LKmLLoKtR2lxdpCC/P3g1vfKcawQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/test-sequencer@30.0.5': - resolution: {integrity: sha512-Aea/G1egWoIIozmDD7PBXUOxkekXl7ueGzrsGGi1SbeKgQqCYCIf+wfbflEbf2LiPxL8j2JZGLyrzZagjvW4YQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/transform@30.0.5': - resolution: {integrity: sha512-Vk8amLQCmuZyy6GbBht1Jfo9RSdBtg7Lks+B0PecnjI8J+PCLQPGh7uI8Q/2wwpW2gLdiAfiHNsmekKlywULqg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/types@30.0.5': - resolution: {integrity: sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jimp/core@1.6.0': resolution: {integrity: sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==} engines: {node: '>=18'} @@ -3785,12 +3146,6 @@ packages: resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} engines: {node: '>=18'} - '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - - '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@napi-rs/wasm-runtime@1.0.3': resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} @@ -3864,129 +3219,6 @@ packages: resolution: {integrity: sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==} engines: {node: ^18.17.0 || >=20.5.0} - '@nx/devkit@21.3.11': - resolution: {integrity: sha512-JOV8TAa9K5+ZwTA/EUi0g5qcKEg5vmi0AyOUsrNUHlv3BgQnwZtPLDDTPPZ+ezq24o6YzgwueZWj3CLEdMHEDg==} - peerDependencies: - nx: 21.3.11 - - '@nx/esbuild@21.3.11': - resolution: {integrity: sha512-KODlvBH5JpuAJpDb98J093270TniNDPVDmLtVbAiPFJPRI5R7ElOLxO5gYtDNIlcQyVbrG6gb6I8RDFYz+nKeQ==} - peerDependencies: - esbuild: '>=0.25.0' - peerDependenciesMeta: - esbuild: - optional: true - - '@nx/eslint-plugin@21.3.11': - resolution: {integrity: sha512-BabOp+5qZx/GgCWVALiVm4wjrUOO5sqeItsAWtpocMsvYE8YRZ4+AekS/F2knTjJdcdrh51hxqv5ua3YTNFtfA==} - peerDependencies: - '@typescript-eslint/parser': ^6.13.2 || ^7.0.0 || ^8.0.0 - eslint-config-prettier: ^10.0.0 - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - '@nx/eslint@21.3.11': - resolution: {integrity: sha512-9jeD8QuU3OMcItjtw0QHl5cwohLeA9R+lajNJoOjS2tUGXTHWb8NOcEZBXWMcML+eV1iloIDW8/P4jV4BYqP2w==} - peerDependencies: - '@zkochan/js-yaml': 0.0.7 - eslint: ^8.0.0 || ^9.0.0 - peerDependenciesMeta: - '@zkochan/js-yaml': - optional: true - - '@nx/express@21.3.11': - resolution: {integrity: sha512-8VcU8+TnXmD+yCi58YyeW13ULwFrHRVD5x/B2T8IKH7j//Vc15vIBkIisgcRt2tGlz3QdR0TLftOsouCTpFlfw==} - peerDependencies: - express: ^4.21.2 - peerDependenciesMeta: - express: - optional: true - - '@nx/jest@21.3.11': - resolution: {integrity: sha512-PkdNWeoUY81zr+jtUapBdvvh26lWYIhDNyUwTjIBFajX8EAlhJpvShKHs7QObmrwOMLMXwLHKINiSCw9rueOBQ==} - - '@nx/js@21.3.11': - resolution: {integrity: sha512-aN8g1TP3FMN6MFLvMrZNaoqSwAkBFH1PunKQV17w4nlPkimWICaCP2DhY5W3VoOpjQBbhQoqrRt4mVfgnEpyvA==} - peerDependencies: - verdaccio: ^6.0.5 - peerDependenciesMeta: - verdaccio: - optional: true - - '@nx/node@21.3.11': - resolution: {integrity: sha512-4B2onNmhrCaLlhwhDycMOisAuXmajAbl9gM8G6dS4Tc6z8QHXswlJG6rVP4VvR0ZZKtLeKGED2X5hpv9T1ikxw==} - - '@nx/nx-darwin-arm64@21.3.11': - resolution: {integrity: sha512-qXZrW6kfsfGG9n4cWugR2v8ys7P1SsbQuFahlbNSTd7g+ZxozaOnc7tyxW9XuY84KQ35HwP/QSu1E13fK5CXwQ==} - cpu: [arm64] - os: [darwin] - - '@nx/nx-darwin-x64@21.3.11': - resolution: {integrity: sha512-6NJEIGRITpFZYptJtr/wdnVuidAS/wONMMSwX5rgAqh5A9teI0vxZVOgG6n5f6NQyqEDvZ9ytcIvLsQWA4kJFg==} - cpu: [x64] - os: [darwin] - - '@nx/nx-freebsd-x64@21.3.11': - resolution: {integrity: sha512-9VZOM9mutzuZCUgijHXrIl3NgKt2CWuH/awLqDS8ijhLs6WfI5TYTa+mFwx90dfZZ4y/jy6XWXa2Ee3OShf7Hg==} - cpu: [x64] - os: [freebsd] - - '@nx/nx-linux-arm-gnueabihf@21.3.11': - resolution: {integrity: sha512-a05tAySKDEWt0TGoSnWp/l5+HL/CDJQkHfI9pXho85oDSkVRzhOInAn1EeZB/F+Q3PnJFsMHMhbuu2/nm3uYJA==} - cpu: [arm] - os: [linux] - - '@nx/nx-linux-arm64-gnu@21.3.11': - resolution: {integrity: sha512-MPeivf0ptNpzQYvww6zHIqVbE5dTT2isl/WqzGyy7NgSeYDpFXmouDCQaeKxo5WytMVRCvCw/NnWTQuCK6TjnA==} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-arm64-musl@21.3.11': - resolution: {integrity: sha512-/hJpc4VJsbxDEreXt5Ka9HJ3TBEHgIa9y/i+H9MmWOeapCdH1Edhx58Heuv9OaX7kK8Y8q0cSicv0dJCghiTjA==} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-x64-gnu@21.3.11': - resolution: {integrity: sha512-pTBHuloqTxpTHa/fdKjHkFFsfW16mEcTp37HDtoQpjPfcd9nO8CYO8OClaewr9khNqCnSbCLfSoIg/alnb7BWw==} - cpu: [x64] - os: [linux] - - '@nx/nx-linux-x64-musl@21.3.11': - resolution: {integrity: sha512-OhFjURB68rd6xld8t8fiNpopF2E7v+8/jfbpsku9c0gdV2UhzoxCeZwooe7qhQjCcjVO8JNOs4dAf7qs1VtpMw==} - cpu: [x64] - os: [linux] - - '@nx/nx-win32-arm64-msvc@21.3.11': - resolution: {integrity: sha512-pGE2Td13oEj7aeogwCL+2fjmpabQVSduKfGOTlt4YoMlM0w0bXYSWqwiGBMKbMA50qkhnVapwwkuWF38PgCIxg==} - cpu: [arm64] - os: [win32] - - '@nx/nx-win32-x64-msvc@21.3.11': - resolution: {integrity: sha512-KJqLL/Zyx96hs+7pKbo/fsU7ZTFSLeZLnYQu05o6fvJJ5I1+p85t212/7vkbKKWJncyMospQdzLr3zLG3A/u8A==} - cpu: [x64] - os: [win32] - - '@nx/playwright@21.3.11': - resolution: {integrity: sha512-15VfcWM8+DgOZ726vOpfSX0rTi3Em3XgfjySRWuJbGDRua4BZUcVQMxvDgj30jQRCygaefw4N910sHWwVhaCbA==} - peerDependencies: - '@playwright/test': ^1.36.0 - peerDependenciesMeta: - '@playwright/test': - optional: true - - '@nx/vite@21.3.11': - resolution: {integrity: sha512-aplSvXZOFrGnGZfYGNjz8wP9wrHl37o0UIFgN8pVB6PqWqEmxliVJ1ywFFtku6q1dKK29BB253xFjL63t7l+4w==} - peerDependencies: - vite: ^5.0.0 || ^6.0.0 - vitest: ^1.3.1 || ^2.0.0 || ^3.0.0 - - '@nx/web@21.3.11': - resolution: {integrity: sha512-nDXv9yJgqZGqD3iEGkacJ7HQ4AbIlPvXH3qdv1ZwJWn0hAt7gBh1TO24gKz38sB3bwZlORRXEAi3dG0XgGkdxA==} - - '@nx/workspace@21.3.11': - resolution: {integrity: sha512-DD2iu9Ip/faNQ5MXZk+UbbBxGofYKjzHsXKRvMNQ/OAVzP/u9z2CPXEmRKlRAEQoy1lInmyopwfEUWwK1v4x0g==} - '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -4003,71 +3235,6 @@ packages: '@oxc-project/types@0.77.3': resolution: {integrity: sha512-5Vh+neJhhxuF0lYCjZXbxjqm2EO6YJ1jG+KuHntrd6VY67OMpYhWq2cZhUhy+xL9qLJVJRaeII7Xj9fciA6v7A==} - '@oxc-resolver/binding-darwin-arm64@5.3.0': - resolution: {integrity: sha512-hXem5ZAguS7IlSiHg/LK0tEfLj4eUo+9U6DaFwwBEGd0L0VIF9LmuiHydRyOrdnnmi9iAAFMAn/wl2cUoiuruA==} - cpu: [arm64] - os: [darwin] - - '@oxc-resolver/binding-darwin-x64@5.3.0': - resolution: {integrity: sha512-wgSwfsZkRbuYCIBLxeg1bYrtKnirAy+IJF0lwfz4z08clgdNBDbfGECJe/cd0csIZPpRcvPFe8317yf31sWhtA==} - cpu: [x64] - os: [darwin] - - '@oxc-resolver/binding-freebsd-x64@5.3.0': - resolution: {integrity: sha512-kzeE2WHgcRMmWjB071RdwEV5Pwke4o0WWslCKoh8if1puvxIxfzu3o7g6P2+v77BP5qop4cri+uvLABSO0WZjg==} - cpu: [x64] - os: [freebsd] - - '@oxc-resolver/binding-linux-arm-gnueabihf@5.3.0': - resolution: {integrity: sha512-I8np34yZP/XfIkZNDbw3rweqVgfjmHYpNX3xnJZWg+f4mgO9/UNWBwetSaqXeDZqvIch/aHak+q4HVrQhQKCqg==} - cpu: [arm] - os: [linux] - - '@oxc-resolver/binding-linux-arm64-gnu@5.3.0': - resolution: {integrity: sha512-u2ndfeEUrW898eXM+qPxIN8TvTPjI90NDQBRgaxxkOfNw3xaotloeiZGz5+Yzlfxgvxr9DY9FdYkqhUhSnGhOw==} - cpu: [arm64] - os: [linux] - - '@oxc-resolver/binding-linux-arm64-musl@5.3.0': - resolution: {integrity: sha512-TzbjmFkcnESGuVItQ2diKacX8vu5G0bH3BHmIlmY4OSRLyoAlrJFwGKAHmh6C9+Amfcjo2rx8vdm7swzmsGC6Q==} - cpu: [arm64] - os: [linux] - - '@oxc-resolver/binding-linux-riscv64-gnu@5.3.0': - resolution: {integrity: sha512-NH3pjAqh8nuN29iRuRfTY42Vn03ctoR9VE8llfoUKUfhHUjFHYOXK5VSkhjj1usG8AeuesvqrQnLptCRQVTi/Q==} - cpu: [riscv64] - os: [linux] - - '@oxc-resolver/binding-linux-s390x-gnu@5.3.0': - resolution: {integrity: sha512-tuZtkK9sJYh2MC2uhol1M/8IMTB6ZQ5jmqP2+k5XNXnOb/im94Y5uV/u2lXwVyIuKHZZHtr+0d1HrOiNahoKpw==} - cpu: [s390x] - os: [linux] - - '@oxc-resolver/binding-linux-x64-gnu@5.3.0': - resolution: {integrity: sha512-VzhPYmZCtoES/ThcPdGSmMop7JlwgqtSvlgtKCW15ByV2JKyl8kHAHnPSBfpIooXb0ehFnRdxFtL9qtAEWy01g==} - cpu: [x64] - os: [linux] - - '@oxc-resolver/binding-linux-x64-musl@5.3.0': - resolution: {integrity: sha512-Hi39cWzul24rGljN4Vf1lxjXzQdCrdxO5oCT7KJP4ndSlqIUODJnfnMAP1YhcnIRvNvk+5E6sZtnEmFUd/4d8Q==} - cpu: [x64] - os: [linux] - - '@oxc-resolver/binding-wasm32-wasi@5.3.0': - resolution: {integrity: sha512-ddujvHhP3chmHnSXRlkPVUeYj4/B7eLZwL4yUid+df3WCbVh6DgoT9RmllZn21AhxgKtMdekDdyVJYKFd8tl4A==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@oxc-resolver/binding-win32-arm64-msvc@5.3.0': - resolution: {integrity: sha512-j1YYPLvUkMVNKmIFQZZJ7q6Do4cI3htUnyxNLwDSBVhSohvPIK2VG+IdtOAlWZGa7v+phEZsHfNbXVwB0oPYFQ==} - cpu: [arm64] - os: [win32] - - '@oxc-resolver/binding-win32-x64-msvc@5.3.0': - resolution: {integrity: sha512-LT9eOPPUqfZscQRd5mc08RBeDWOQf+dnOrKnanMallTGPe6g7+rcAlFTA8SWoJbcD45PV8yArFtCmSQSpzHZmg==} - cpu: [x64] - os: [win32] - '@panva/asn1.js@1.0.0': resolution: {integrity: sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==} engines: {node: '>=10.13.0'} @@ -4157,19 +3324,10 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@phenomnomnominal/tsquery@5.0.1': - resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} - peerDependencies: - typescript: ^3 || ^4 || ^5 - '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.55.0': resolution: {integrity: sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==} engines: {node: '>=18'} @@ -4957,19 +4115,10 @@ packages: '@sinclair/typebox@0.31.28': resolution: {integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==} - '@sinclair/typebox@0.34.38': - resolution: {integrity: sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==} - '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@13.0.5': - resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} - '@smithy/abort-controller@4.0.4': resolution: {integrity: sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==} engines: {node: '>=18.0.0'} @@ -5225,22 +4374,6 @@ packages: svelte: ^5.0.0 vite: ^6.3.0 || ^7.0.0 - '@swc-node/core@1.14.1': - resolution: {integrity: sha512-jrt5GUaZUU6cmMS+WTJEvGvaB6j1YNKPHPzC2PUi2BjaFbtxURHj6641Az6xN7b665hNniAIdvjxWcRml5yCnw==} - engines: {node: '>= 10'} - peerDependencies: - '@swc/core': '>= 1.13.3' - '@swc/types': '>= 0.1' - - '@swc-node/register@1.10.10': - resolution: {integrity: sha512-jYWaI2WNEKz8KZL3sExd2KVL1JMma1/J7z+9iTpv0+fRN7LGMF8VTGGuHI2bug/ztpdZU1G44FG/Kk6ElXL9CQ==} - peerDependencies: - '@swc/core': '>= 1.4.13' - typescript: '>= 4.3' - - '@swc-node/sourcemap-support@0.5.1': - resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} - '@swc/core-darwin-arm64@1.11.29': resolution: {integrity: sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==} engines: {node: '>=10'} @@ -5479,9 +4612,6 @@ packages: '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - '@types/appdmg@0.5.5': resolution: {integrity: sha512-G+n6DgZTZFOteITE30LnWj+HRVIGr7wMlAiLWOO02uJFWVEitaPU9JVXm9wJokkgshBawb2O1OykdcsmkkZfgg==} @@ -5494,18 +4624,6 @@ packages: '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} - '@types/better-sqlite3@7.6.13': resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} @@ -5728,15 +4846,6 @@ packages: '@types/ini@4.1.1': resolution: {integrity: sha512-MIyNUZipBTbyUNnhvuXJTY7B6qNI78meck9Jbv3wk0OgNwRyOOVEKDutAkOs1snB/tx0FafyR6/SN4Ps0hZPeg==} - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jquery@3.5.33': resolution: {integrity: sha512-SeyVJXlCZpEki5F0ghuYe+L+PprQta6nRZqhONt9F13dWBtR/ftoaIbdRQ7cis7womE+X2LKhsDdDtkkDhJS6g==} @@ -5895,9 +5004,6 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} @@ -5997,12 +5103,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.38.0': - resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.40.0': resolution: {integrity: sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6015,10 +5115,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.38.0': - resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.40.0': resolution: {integrity: sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6027,12 +5123,6 @@ packages: resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.38.0': - resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/tsconfig-utils@8.40.0': resolution: {integrity: sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6045,13 +5135,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.38.0': - resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.40.0': resolution: {integrity: sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6066,10 +5149,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.38.0': - resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.40.0': resolution: {integrity: sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6078,12 +5157,6 @@ packages: resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.38.0': - resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.40.0': resolution: {integrity: sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6096,13 +5169,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.38.0': - resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.40.0': resolution: {integrity: sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6117,10 +5183,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.38.0': - resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.40.0': resolution: {integrity: sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6132,101 +5194,6 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} - cpu: [arm] - os: [android] - - '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} - cpu: [arm64] - os: [android] - - '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} - cpu: [arm64] - os: [darwin] - - '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} - cpu: [x64] - os: [darwin] - - '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} - cpu: [x64] - os: [freebsd] - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} - cpu: [arm64] - os: [linux] - - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} - cpu: [arm64] - os: [linux] - - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} - cpu: [ppc64] - os: [linux] - - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} - cpu: [riscv64] - os: [linux] - - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} - cpu: [riscv64] - os: [linux] - - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} - cpu: [s390x] - os: [linux] - - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} - cpu: [x64] - os: [linux] - - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} - cpu: [x64] - os: [linux] - - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} - cpu: [arm64] - os: [win32] - - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} - cpu: [ia32] - os: [win32] - - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} - cpu: [x64] - os: [win32] - '@uploadcare/file-uploader@1.17.1': resolution: {integrity: sha512-IRXejLHD+2S40eRZ6jGHG83yuHLledqAnWYlxC/hwMtO7kvXnZqAwYpnk5R+zTfg6Hj001Ah0Zatd0+Am6wIgw==} @@ -6410,21 +5377,10 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - - '@yarnpkg/parsers@3.0.2': - resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} - engines: {node: '>=18.12.0'} - '@zip.js/zip.js@2.7.72': resolution: {integrity: sha512-3/A4JwrgkvGBlCxtItjxs8HrNbuTAAl/zlGkV6tC5Fb5k5nk4x2Dqxwl/YnUys5Ch+QB01eJ8Q5K/J2uXfy9Vw==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=16.5.0'} - '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} - hasBin: true - abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead @@ -6489,10 +5445,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -6569,10 +5521,6 @@ packages: resolution: {integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==} engines: {node: '>=6'} - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -6767,69 +5715,15 @@ packages: b4a@1.6.7: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - babel-jest@30.0.5: - resolution: {integrity: sha512-mRijnKimhGDMsizTvBTWotwNpzrkHr+VvZUQBof2AufXKB8NXrL1W69TG20EvOz7aevx6FTJIaBuBkYxS8zolg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - - babel-plugin-const-enum@1.2.0: - resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-istanbul@7.0.0: - resolution: {integrity: sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==} - engines: {node: '>=12'} - - babel-plugin-jest-hoist@30.0.1: - resolution: {integrity: sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} - babel-plugin-polyfill-corejs2@0.4.13: - resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.11.1: - resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.4: - resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-transform-hook-names@1.0.2: resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==} peerDependencies: '@babel/core': ^7.12.10 - babel-plugin-transform-typescript-metadata@0.3.2: - resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} - peerDependencies: - '@babel/core': ^7 - '@babel/traverse': ^7 - peerDependenciesMeta: - '@babel/traverse': - optional: true - - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@30.0.1: - resolution: {integrity: sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -6981,9 +5875,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-alloc-unsafe@1.1.0: resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} @@ -7130,10 +6021,6 @@ packages: resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -7196,13 +6083,6 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - ci-info@4.3.0: - resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} - engines: {node: '>=8'} - - cjs-module-lexer@2.1.0: - resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} - ckeditor5-collaboration@46.0.2: resolution: {integrity: sha512-VIL6EFMYDJ4+v1ih63b84VWya5XnuHF5X/bHGoswHCHj/1T4+9FsDhyWMCQYfGlKjR28YcpAFLGsVhNrhrLkdQ==} @@ -7230,10 +6110,6 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} - cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} - cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -7291,10 +6167,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - codemirror-lang-elixir@4.0.0: resolution: {integrity: sha512-mzFesxo/t6KOxwnkqVd34R/q7yk+sMtHh6vUKGAvjwHmpL7bERHB+vQAsmU/nqrndkwVeJEHWGw/z/ybfdiudA==} @@ -7304,9 +6176,6 @@ packages: codemirror-lang-mermaid@0.5.0: resolution: {integrity: sha512-Taw/2gPCyNArQJCxIP/HSUif+3zrvD+6Ugt7KJZ2dUKou/8r3ZhcfG8krNTZfV2iu8AuGnymKuo7bLPFyqsh/A==} - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - color-convert@0.5.3: resolution: {integrity: sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==} @@ -7351,10 +6220,6 @@ packages: resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} engines: {node: '>=0.1.90'} - columnify@1.6.0: - resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} - engines: {node: '>=8.0.0'} - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -7447,9 +6312,6 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} @@ -7514,9 +6376,6 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.41.0: - resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} - core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -7997,15 +6856,6 @@ packages: supports-color: optional: true - debug@4.3.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -8058,14 +6908,6 @@ packages: babel-plugin-macros: optional: true - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -8108,10 +6950,6 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -8172,10 +7010,6 @@ packages: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -8188,11 +7022,6 @@ packages: detect-pointer@1.0.3: resolution: {integrity: sha512-d0o/Puo3fiGSCXy6H039h9Kwz+mmYCGKZ/qtPFnpN3WfsumjC1C9b5KKvRu+aYnfdI8peqN/iAe7dPd85qIt2g==} - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true - detect-touch-events@2.0.2: resolution: {integrity: sha512-g8GWBkJLiIDRJfRXEdrd1wMXpNyGId2DkbfuwFahSb4OCvn717hyRJtAcEDISfp3zkwEhZ4Y4woHPA6DeyB3Fw==} @@ -8270,14 +7099,6 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dotenv-expand@11.0.7: - resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} - engines: {node: '>=12'} - - dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} - engines: {node: '>=12'} - dotenv@17.2.1: resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==} engines: {node: '>=12'} @@ -8387,10 +7208,6 @@ packages: emitter-listener@1.1.2: resolution: {integrity: sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==} - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -8445,10 +7262,6 @@ packages: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -8551,10 +7364,6 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -8716,10 +7525,6 @@ packages: exif-parser@0.1.12: resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} - exit-x@0.2.2: - resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} - engines: {node: '>= 0.8.0'} - expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -8728,10 +7533,6 @@ packages: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} - expect@30.0.5: - resolution: {integrity: sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - exponential-backoff@3.1.2: resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} @@ -8833,9 +7634,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -8863,10 +7661,6 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - file-entry-cache@10.1.3: resolution: {integrity: sha512-D+w75Ub8T55yor7fPgN06rkCAUbAYw2vpxJmmjv/GDAcvCnv9g7IvHhIZoxzRZThrXPFI2maeY24pPbtyYU7Lg==} @@ -9014,12 +7808,6 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} - front-matter@4.0.2: - resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -9150,10 +7938,6 @@ packages: resolution: {integrity: sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==} engines: {node: '>= 4.0'} - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - get-port@7.1.0: resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} engines: {node: '>=16'} @@ -9181,9 +7965,6 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-them-args@1.3.2: - resolution: {integrity: sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw==} - get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} @@ -9333,9 +8114,6 @@ packages: resolution: {integrity: sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==} engines: {node: '>=20.0.0'} - harmony-reflect@1.6.2: - resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} - has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -9453,10 +8231,6 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} - hosted-git-info@8.1.0: resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -9617,10 +8391,6 @@ packages: peerDependencies: postcss: ^8.1.0 - identity-obj-proxy@3.0.0: - resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} - engines: {node: '>=4'} - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -9753,10 +8523,6 @@ packages: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} - ip-regex@4.3.0: - resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} - engines: {node: '>=8'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -9811,11 +8577,6 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9849,10 +8610,6 @@ packages: resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} engines: {node: '>=18'} - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - is-generator-function@1.1.0: resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} @@ -9992,9 +8749,6 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -10010,18 +8764,10 @@ packages: is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} - is2@2.0.9: - resolution: {integrity: sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==} - engines: {node: '>=v0.10.0'} - isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -10077,102 +8823,6 @@ packages: javascript-stringify@1.6.0: resolution: {integrity: sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==} - jest-circus@30.0.5: - resolution: {integrity: sha512-h/sjXEs4GS+NFFfqBDYT7y5Msfxh04EwWLhQi0F8kuWpe+J/7tICSlswU8qvBqumR3kFgHbfu7vU6qruWWBPug==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-config@30.0.5: - resolution: {integrity: sha512-aIVh+JNOOpzUgzUnPn5FLtyVnqc3TQHVMupYtyeURSb//iLColiMIR8TxCIDKyx9ZgjKnXGucuW68hCxgbrwmA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - '@types/node': '*' - esbuild-register: '>=3.4.0' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - esbuild-register: - optional: true - ts-node: - optional: true - - jest-diff@30.0.5: - resolution: {integrity: sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-docblock@30.0.1: - resolution: {integrity: sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-each@30.0.5: - resolution: {integrity: sha512-dKjRsx1uZ96TVyejD3/aAWcNKy6ajMaN531CwWIsrazIqIoXI9TnnpPlkrEYku/8rkS3dh2rbH+kMOyiEIv0xQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-environment-node@30.0.5: - resolution: {integrity: sha512-ppYizXdLMSvciGsRsMEnv/5EFpvOdXBaXRBzFUDPWrsfmog4kYrOGWXarLllz6AXan6ZAA/kYokgDWuos1IKDA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-haste-map@30.0.5: - resolution: {integrity: sha512-dkmlWNlsTSR0nH3nRfW5BKbqHefLZv0/6LCccG0xFCTWcJu8TuEwG+5Cm75iBfjVoockmO6J35o5gxtFSn5xeg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-leak-detector@30.0.5: - resolution: {integrity: sha512-3Uxr5uP8jmHMcsOtYMRB/zf1gXN3yUIc+iPorhNETG54gErFIiUhLvyY/OggYpSMOEYqsmRxmuU4ZOoX5jpRFg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-matcher-utils@30.0.5: - resolution: {integrity: sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-message-util@30.0.5: - resolution: {integrity: sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-mock@30.0.5: - resolution: {integrity: sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@30.0.1: - resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-resolve@30.0.5: - resolution: {integrity: sha512-d+DjBQ1tIhdz91B79mywH5yYu76bZuE96sSbxj8MkjWVx5WNdt1deEFRONVL4UkKLSrAbMkdhb24XN691yDRHg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-runner@30.0.5: - resolution: {integrity: sha512-JcCOucZmgp+YuGgLAXHNy7ualBx4wYSgJVWrYMRBnb79j9PD0Jxh0EHvR5Cx/r0Ce+ZBC4hCdz2AzFFLl9hCiw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-runtime@30.0.5: - resolution: {integrity: sha512-7oySNDkqpe4xpX5PPiJTe5vEa+Ak/NnNz2bGYZrA1ftG3RL3EFlHaUkA1Cjx+R8IhK0Vg43RML5mJedGTPNz3A==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-snapshot@30.0.5: - resolution: {integrity: sha512-T00dWU/Ek3LqTp4+DcW6PraVxjk28WY5Ua/s+3zUKSERZSNyxTqhDXCWKG5p2HAJ+crVQ3WJ2P9YVHpj1tkW+g==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-util@30.0.5: - resolution: {integrity: sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-validate@30.0.5: - resolution: {integrity: sha512-ouTm6VFHaS2boyl+k4u+Qip4TSH7Uld5tyD8psQ8abGgt2uYYB8VwVfAHWHjHc0NWmGGbwO5h0sCPOGHHevefw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - jest-watcher@30.0.5: - resolution: {integrity: sha512-z9slj/0vOwBDBjN3L4z4ZYaA+pG56d6p3kTUhFRYGvXbXMWhXmb/FIxREZCD06DYUwDKKnj2T80+Pb71CQ0KEg==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-worker@26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} @@ -10181,10 +8831,6 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jest-worker@30.0.5: - resolution: {integrity: sha512-ojRXsWzEP16NdUuBw/4H/zkZdHOa7MMYCk4E430l+8fELeLg/mqmMlRhjL7UNZvQrDmnovWZV4DxX03fZF48fQ==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jimp@1.6.0: resolution: {integrity: sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==} engines: {node: '>=18'} @@ -10252,10 +8898,6 @@ packages: resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} hasBin: true - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -10285,11 +8927,6 @@ packages: canvas: optional: true - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -10329,9 +8966,6 @@ packages: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -10386,10 +9020,6 @@ packages: khroma@2.1.0: resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} - kill-port@1.6.1: - resolution: {integrity: sha512-un0Y55cOM7JKGaLnGja28T38tDDop0AQ8N0KlAdyh+B1nmMoX8AnNmqPNZbS3mUMgiST51DCVqmbFT1gNJpVNw==} - hasBin: true - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -10443,10 +9073,6 @@ packages: engines: {node: '>=6'} hasBin: true - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -10535,10 +9161,6 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lint-staged@16.1.5: resolution: {integrity: sha512-uAeQQwByI6dfV7wpt/gVqg+jAPaSp8WwOA8kKC/dv1qw14oGpnpAisY65ibGHUGDUv0rYaZ8CAJZ/1U8hUvC2A==} engines: {node: '>=20.17'} @@ -10743,9 +9365,6 @@ packages: resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} engines: {node: '>= 10'} - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - map-age-cleaner@0.1.3: resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} engines: {node: '>=6'} @@ -11049,10 +9668,6 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -11167,9 +9782,6 @@ packages: ms@2.1.1: resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -11232,11 +9844,6 @@ packages: napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - napi-postinstall@0.3.2: - resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - hasBin: true - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -11326,12 +9933,6 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} - node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -11379,10 +9980,6 @@ packages: resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} engines: {node: ^18.17.0 || >=20.5.0} - npm-package-arg@11.0.1: - resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} - engines: {node: ^16.14.0 || >=18.0.0} - npm-package-arg@12.0.2: resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -11418,18 +10015,6 @@ packages: nwsapi@2.2.20: resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} - nx@21.3.11: - resolution: {integrity: sha512-nj2snZ3mHZnbHcoB3NUdxbch9L1sQKV1XccLs1B79fmI/N5oOgWgctm/bWoZH2UH5b4A8ZLAMTsC6YnSJGbcaw==} - hasBin: true - peerDependencies: - '@swc-node/register': ^1.8.0 - '@swc/core': ^1.3.85 - peerDependenciesMeta: - '@swc-node/register': - optional: true - '@swc/core': - optional: true - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -11504,10 +10089,6 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - openai@5.12.0: resolution: {integrity: sha512-vUdt02xiWgOHiYUmW0Hj1Qu9OKAiVQu5Bd547ktVCiMKC1BkB5L3ImeEnCyq3WpRKR6ZTaPgekzqdozwdPs7Lg==} hasBin: true @@ -11535,10 +10116,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} - ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -11550,9 +10127,6 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - oxc-resolver@5.3.0: - resolution: {integrity: sha512-FHqtZx0idP5QRPSNcI5g2ItmADg7fhR3XIeWg5eRMGfp44xqRpfkdvo+EX4ZceqV9bxvl0Z8vaqMqY0gYaNYNA==} - p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -11833,10 +10407,6 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - pixelmatch@5.3.0: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true @@ -12715,10 +11285,6 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - pretty-format@30.0.5: - resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - prism-svelte@0.4.7: resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==} @@ -12730,10 +11296,6 @@ packages: resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - proc-log@3.0.0: - resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - proc-log@5.0.0: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -12805,9 +11367,6 @@ packages: resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} engines: {node: '>=12.20'} - pure-rand@7.0.1: - resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} - purgecss@6.0.0: resolution: {integrity: sha512-s3EBxg5RSWmpqd0KGzNqPiaBbWDz1/As+2MzoYVGMqgDqRTLBhJW6sywfTBek7OwNfoS/6pS0xdtvChNhFj2cw==} hasBin: true @@ -12922,9 +11481,6 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-refresh@0.17.0: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} @@ -13030,31 +11586,10 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} - engines: {node: '>=4'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} - hasBin: true - rehype-dom-parse@5.0.2: resolution: {integrity: sha512-8CqP11KaqvtWsMqVEC2yM3cZWZsDNqqpr8nPvogjraLuh45stabgcpXadCAxu1n6JaUNJ/Xr3GIqXP7okbNqLg==} @@ -13593,9 +12128,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-exec@1.0.2: - resolution: {integrity: sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==} - shell-quote@1.8.3: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} @@ -13738,12 +12270,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map-support@0.5.19: - resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -13839,10 +12365,6 @@ packages: resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==} engines: {node: '>=16'} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -13891,10 +12413,6 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - string-width@2.1.1: resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} engines: {node: '>=4'} @@ -13956,10 +12474,6 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - strip-bom@5.0.0: resolution: {integrity: sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==} engines: {node: '>=12'} @@ -14200,10 +12714,6 @@ packages: resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} engines: {node: '>=16.0.0'} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} - engines: {node: ^14.18.0 || >=16.0.0} - table@6.9.0: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} @@ -14225,10 +12735,6 @@ packages: tar-fs@3.1.0: resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -14240,9 +12746,6 @@ packages: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} - tcp-port-used@1.0.2: - resolution: {integrity: sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==} - temp@0.9.4: resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} engines: {node: '>=6.0.0'} @@ -14279,10 +12782,6 @@ packages: engines: {node: '>=10'} hasBin: true - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - test-exclude@7.0.1: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} @@ -14359,9 +12858,6 @@ packages: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - tn1150@0.1.0: resolution: {integrity: sha512-DbplOfQFkqG5IHcDyyrs/lkvSr3mPUVsFf/RbDppOshs22yTPnSJWEe6FkYd1txAwU/zcnR905ar2fi4kwF29w==} engines: {node: '>=0.12'} @@ -14414,10 +12910,6 @@ packages: peerDependencies: tslib: '2' - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -14465,10 +12957,6 @@ packages: '@swc/wasm': optional: true - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -14497,10 +12985,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} @@ -14576,11 +13060,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.9.2: resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} @@ -14622,22 +13101,6 @@ packages: resolution: {integrity: sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==} engines: {node: '>=0.10.0'} - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - unidragger@3.0.1: resolution: {integrity: sha512-RngbGSwBFmqGBWjkaH+yB677uzR95blSQyxq6hYbrQCejH3Mx1nm8DVOuh3M9k2fQyTstWUG5qlgCnNqV/9jVw==} @@ -14724,9 +13187,6 @@ packages: resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==} engines: {node: '>=18.12.0'} - unrs-resolver@1.11.1: - resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - unused-filename@4.0.1: resolution: {integrity: sha512-ZX6U1J04K1FoSUeoX1OicAhw4d0aro2qo+L8RhJkiGTNtBNkd/Fi1Wxoc9HzcVu6HfOzm0si/N15JjxFmD1z6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -14822,17 +13282,9 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - validate-npm-package-name@6.0.2: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -15063,9 +13515,6 @@ packages: engines: {node: '>=10'} hasBin: true - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} @@ -15395,11 +13844,6 @@ packages: resolution: {integrity: sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==} engines: {node: '>= 6'} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} - engines: {node: '>= 14.6'} - hasBin: true - yaml@2.8.1: resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} @@ -15968,10 +14412,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.25.9': - dependencies: - '@babel/types': 7.28.1 - '@babel/helper-annotate-as-pure@7.27.3': dependencies: '@babel/types': 7.28.1 @@ -15984,46 +14424,8 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.28.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.28.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.2.0 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1(supports-color@6.0.0) - lodash.debounce: 4.0.8 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.25.9': - dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 @@ -16040,51 +14442,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.25.9': - dependencies: - '@babel/types': 7.28.1 - '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.26.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.25.9': - dependencies: - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - transitivePeerDependencies: - - supports-color - '@babel/helpers@7.27.6': dependencies: '@babel/template': 7.27.2 @@ -16098,406 +14463,11 @@ snapshots: dependencies: '@babel/types': 7.28.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 - - '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-literals@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.28.0) - - '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -16516,190 +14486,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.28.0) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.28.0) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.28.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-spread@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/preset-env@7.26.9(@babel/core@7.28.0)': - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0) - '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.28.0) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.28.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.28.0) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.28.0) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.28.0) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.28.0) - '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.28.0) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.28.0) - '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.28.0) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.28.0) - '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.28.0) - '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.28.0) - '@babel/plugin-transform-typeof-symbol': 7.27.0(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.28.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.0) - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.28.0) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.28.0) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.28.0) - core-js-compat: 3.41.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.1 - esutils: 2.0.3 - - '@babel/preset-typescript@7.27.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.28.0) - '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - '@babel/runtime@7.27.6': {} '@babel/template@7.27.0': @@ -16748,8 +14534,6 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@bcoe/v8-coverage@0.2.3': {} - '@bcoe/v8-coverage@1.0.2': {} '@braintree/sanitize-url@6.0.2': {} @@ -16811,6 +14595,8 @@ snapshots: '@ckeditor/ckeditor5-core': 46.0.2 '@ckeditor/ckeditor5-upload': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-ai@46.0.2': dependencies: @@ -16954,8 +14740,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-collaboration-core@46.0.2': dependencies: @@ -16969,8 +14753,6 @@ snapshots: '@types/luxon': 3.6.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) luxon: 3.6.1 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-comments@46.0.2': dependencies: @@ -16992,8 +14774,6 @@ snapshots: ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) ckeditor5-collaboration: 46.0.2 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-core@46.0.2': dependencies: @@ -17179,6 +14959,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-decoupled@46.0.2': dependencies: @@ -17188,6 +14970,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-inline@46.0.2': dependencies: @@ -17197,6 +14981,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-multi-root@46.0.2': dependencies: @@ -17219,8 +15005,6 @@ snapshots: '@ckeditor/ckeditor5-table': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-emoji@46.0.2': dependencies: @@ -17233,8 +15017,6 @@ snapshots: ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 fuzzysort: 3.1.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-engine@46.0.2': dependencies: @@ -17246,8 +15028,6 @@ snapshots: '@ckeditor/ckeditor5-core': 46.0.2 '@ckeditor/ckeditor5-engine': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-essentials@46.0.2': dependencies: @@ -17279,8 +15059,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-export-word@46.0.2': dependencies: @@ -17294,8 +15072,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-find-and-replace@46.0.2': dependencies: @@ -17314,8 +15090,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-format-painter@46.0.2': dependencies: @@ -17335,8 +15109,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-heading@46.0.2': dependencies: @@ -17347,8 +15119,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-highlight@46.0.2': dependencies: @@ -17375,8 +15145,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-html-support@46.0.2': dependencies: @@ -17392,8 +15160,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-icons@46.0.2': {} @@ -17411,8 +15177,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-import-word@46.0.2': dependencies: @@ -17425,8 +15189,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-indent@46.0.2': dependencies: @@ -17438,8 +15200,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -17449,8 +15209,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-line-height@46.0.2': dependencies: @@ -17474,8 +15232,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-list-multi-level@46.0.2': dependencies: @@ -17499,8 +15255,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-markdown-gfm@46.0.2': dependencies: @@ -17538,8 +15292,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-mention@46.0.2(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -17621,8 +15373,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-pagination@46.0.2': dependencies: @@ -17788,8 +15538,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-table@46.0.2': dependencies: @@ -17802,8 +15550,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-template@46.0.2': dependencies: @@ -17846,8 +15592,6 @@ snapshots: ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) ckeditor5-collaboration: 46.0.2 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-typing@46.0.2': dependencies: @@ -17914,8 +15658,6 @@ snapshots: '@ckeditor/ckeditor5-engine': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-widget@46.0.2': dependencies: @@ -18523,14 +16265,17 @@ snapshots: dependencies: '@emnapi/wasi-threads': 1.0.4 tslib: 2.8.1 + optional: true '@emnapi/runtime@1.4.5': dependencies: tslib: 2.8.1 + optional: true '@emnapi/wasi-threads@1.0.4': dependencies: tslib: 2.8.1 + optional: true '@epic-web/invariant@1.0.0': {} @@ -19069,159 +16814,8 @@ snapshots: dependencies: minipass: 7.1.2 - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - '@istanbuljs/schema@0.1.3': {} - '@jest/console@30.0.5': - dependencies: - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - chalk: 4.1.2 - jest-message-util: 30.0.5 - jest-util: 30.0.5 - slash: 3.0.0 - - '@jest/diff-sequences@30.0.1': {} - - '@jest/environment@30.0.5': - dependencies: - '@jest/fake-timers': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - jest-mock: 30.0.5 - - '@jest/expect-utils@30.0.5': - dependencies: - '@jest/get-type': 30.0.1 - - '@jest/expect@30.0.5': - dependencies: - expect: 30.0.5 - jest-snapshot: 30.0.5 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@30.0.5': - dependencies: - '@jest/types': 30.0.5 - '@sinonjs/fake-timers': 13.0.5 - '@types/node': 22.18.0 - jest-message-util: 30.0.5 - jest-mock: 30.0.5 - jest-util: 30.0.5 - - '@jest/get-type@30.0.1': {} - - '@jest/globals@30.0.5': - dependencies: - '@jest/environment': 30.0.5 - '@jest/expect': 30.0.5 - '@jest/types': 30.0.5 - jest-mock: 30.0.5 - transitivePeerDependencies: - - supports-color - - '@jest/pattern@30.0.1': - dependencies: - '@types/node': 22.18.0 - jest-regex-util: 30.0.1 - - '@jest/reporters@30.0.5': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 30.0.5 - '@jest/test-result': 30.0.5 - '@jest/transform': 30.0.5 - '@jest/types': 30.0.5 - '@jridgewell/trace-mapping': 0.3.29 - '@types/node': 22.18.0 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit-x: 0.2.2 - glob: 10.4.5 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - jest-message-util: 30.0.5 - jest-util: 30.0.5 - jest-worker: 30.0.5 - slash: 3.0.0 - string-length: 4.0.2 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/schemas@30.0.5': - dependencies: - '@sinclair/typebox': 0.34.38 - - '@jest/snapshot-utils@30.0.5': - dependencies: - '@jest/types': 30.0.5 - chalk: 4.1.2 - graceful-fs: 4.2.11 - natural-compare: 1.4.0 - - '@jest/source-map@30.0.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.30 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@30.0.5': - dependencies: - '@jest/console': 30.0.5 - '@jest/types': 30.0.5 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-sequencer@30.0.5': - dependencies: - '@jest/test-result': 30.0.5 - graceful-fs: 4.2.11 - jest-haste-map: 30.0.5 - slash: 3.0.0 - - '@jest/transform@30.0.5': - dependencies: - '@babel/core': 7.28.0 - '@jest/types': 30.0.5 - '@jridgewell/trace-mapping': 0.3.29 - babel-plugin-istanbul: 7.0.0 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 30.0.5 - jest-regex-util: 30.0.1 - jest-util: 30.0.5 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 5.0.1 - transitivePeerDependencies: - - supports-color - - '@jest/types@30.0.5': - dependencies: - '@jest/pattern': 30.0.1 - '@jest/schemas': 30.0.5 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.18.0 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - '@jimp/core@1.6.0': dependencies: '@jimp/file-ops': 1.6.0 @@ -19702,19 +17296,6 @@ snapshots: strict-event-emitter: 0.5.1 optional: true - '@napi-rs/wasm-runtime@0.2.12': - dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 - '@tybys/wasm-util': 0.10.0 - optional: true - - '@napi-rs/wasm-runtime@0.2.4': - dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 - '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.0.3': dependencies: '@emnapi/core': 1.4.5 @@ -19815,312 +17396,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@nx/devkit@21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))': - dependencies: - ejs: 3.1.10 - enquirer: 2.3.6 - ignore: 5.3.2 - minimatch: 9.0.3 - nx: 21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)) - semver: 7.7.2 - tmp: 0.2.5 - tslib: 2.8.1 - yargs-parser: 21.1.1 - - '@nx/esbuild@21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.9)(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - picocolors: 1.1.1 - tinyglobby: 0.2.14 - tsconfig-paths: 4.2.0 - tslib: 2.8.1 - optionalDependencies: - esbuild: 0.25.9 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - debug - - nx - - supports-color - - verdaccio - - '@nx/eslint-plugin@21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.5.1)))(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.9.2)': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.9.2) - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/type-utils': 8.38.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.38.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - chalk: 4.1.2 - confusing-browser-globals: 1.0.11 - globals: 15.15.0 - jsonc-eslint-parser: 2.4.0 - semver: 7.7.2 - tslib: 2.8.1 - optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.34.0(jiti@2.5.1)) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - debug - - eslint - - nx - - supports-color - - typescript - - verdaccio - - '@nx/eslint@21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - eslint: 9.34.0(jiti@2.5.1) - semver: 7.7.2 - tslib: 2.8.1 - typescript: 5.8.3 - optionalDependencies: - '@zkochan/js-yaml': 0.0.7 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - debug - - nx - - supports-color - - verdaccio - - '@nx/express@21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@9.34.0(jiti@2.5.1))(express@4.21.2)(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2))(typescript@5.9.2)': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/node': 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2))(typescript@5.9.2) - tslib: 2.8.1 - optionalDependencies: - express: 4.21.2 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@types/node' - - '@zkochan/js-yaml' - - babel-plugin-macros - - debug - - esbuild-register - - eslint - - node-notifier - - nx - - supports-color - - ts-node - - typescript - - verdaccio - - '@nx/jest@21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(babel-plugin-macros@3.1.0)(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2))(typescript@5.9.2)': - dependencies: - '@jest/reporters': 30.0.5 - '@jest/test-result': 30.0.5 - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.9.2) - identity-obj-proxy: 3.0.0 - jest-config: 30.0.5(@types/node@22.18.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2)) - jest-resolve: 30.0.5 - jest-util: 30.0.5 - minimatch: 9.0.3 - picocolors: 1.1.1 - resolve.exports: 2.0.3 - semver: 7.7.2 - tslib: 2.8.1 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@types/node' - - babel-plugin-macros - - debug - - esbuild-register - - node-notifier - - nx - - supports-color - - ts-node - - typescript - - verdaccio - - '@nx/js@21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))': - dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.28.0) - '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.28.0) - '@babel/preset-env': 7.26.9(@babel/core@7.28.0) - '@babel/preset-typescript': 7.27.0(@babel/core@7.28.0) - '@babel/runtime': 7.27.6 - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/workspace': 21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)) - '@zkochan/js-yaml': 0.0.7 - babel-plugin-const-enum: 1.2.0(@babel/core@7.28.0) - babel-plugin-macros: 3.1.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.28.0)(@babel/traverse@7.28.0) - chalk: 4.1.2 - columnify: 1.6.0 - detect-port: 1.6.1 - enquirer: 2.3.6 - ignore: 5.3.2 - js-tokens: 4.0.0 - jsonc-parser: 3.2.0 - npm-package-arg: 11.0.1 - npm-run-path: 4.0.1 - ora: 5.3.0 - picocolors: 1.1.1 - picomatch: 4.0.2 - semver: 7.7.2 - source-map-support: 0.5.19 - tinyglobby: 0.2.14 - tslib: 2.8.1 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - debug - - nx - - supports-color - - '@nx/node@21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2))(typescript@5.9.2)': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/eslint': 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/jest': 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(babel-plugin-macros@3.1.0)(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2))(typescript@5.9.2) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - kill-port: 1.6.1 - tcp-port-used: 1.0.2 - tslib: 2.8.1 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@types/node' - - '@zkochan/js-yaml' - - babel-plugin-macros - - debug - - esbuild-register - - eslint - - node-notifier - - nx - - supports-color - - ts-node - - typescript - - verdaccio - - '@nx/nx-darwin-arm64@21.3.11': - optional: true - - '@nx/nx-darwin-x64@21.3.11': - optional: true - - '@nx/nx-freebsd-x64@21.3.11': - optional: true - - '@nx/nx-linux-arm-gnueabihf@21.3.11': - optional: true - - '@nx/nx-linux-arm64-gnu@21.3.11': - optional: true - - '@nx/nx-linux-arm64-musl@21.3.11': - optional: true - - '@nx/nx-linux-x64-gnu@21.3.11': - optional: true - - '@nx/nx-linux-x64-musl@21.3.11': - optional: true - - '@nx/nx-win32-arm64-msvc@21.3.11': - optional: true - - '@nx/nx-win32-x64-msvc@21.3.11': - optional: true - - '@nx/playwright@21.3.11(@babel/traverse@7.28.0)(@playwright/test@1.55.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.9.2)': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/eslint': 21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.34.0(jiti@2.5.1))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.9.2) - minimatch: 9.0.3 - tslib: 2.8.1 - optionalDependencies: - '@playwright/test': 1.55.0 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@zkochan/js-yaml' - - debug - - eslint - - nx - - supports-color - - typescript - - verdaccio - - '@nx/vite@21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.9.2) - '@swc/helpers': 0.5.17 - ajv: 8.17.1 - enquirer: 2.3.6 - picomatch: 4.0.2 - semver: 7.7.2 - tsconfig-paths: 4.2.0 - vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - debug - - nx - - supports-color - - typescript - - verdaccio - - '@nx/web@21.3.11(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)))': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@nx/js': 21.3.11(patch_hash=7201af3a8fb4840b046e4e18cc2758fa67ee3d0cf11d0783869dc828cfc79fc7)(@babel/traverse@7.28.0)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - detect-port: 1.6.1 - http-server: 14.1.1 - picocolors: 1.1.1 - tslib: 2.8.1 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - debug - - nx - - supports-color - - verdaccio - - '@nx/workspace@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))': - dependencies: - '@nx/devkit': 21.3.11(nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@zkochan/js-yaml': 0.0.7 - chalk: 4.1.2 - enquirer: 2.3.6 - nx: 21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)) - picomatch: 4.0.2 - tslib: 2.8.1 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug - '@open-draft/deferred-promise@2.2.0': optional: true @@ -20137,47 +17412,6 @@ snapshots: '@oxc-project/types@0.77.3': {} - '@oxc-resolver/binding-darwin-arm64@5.3.0': - optional: true - - '@oxc-resolver/binding-darwin-x64@5.3.0': - optional: true - - '@oxc-resolver/binding-freebsd-x64@5.3.0': - optional: true - - '@oxc-resolver/binding-linux-arm-gnueabihf@5.3.0': - optional: true - - '@oxc-resolver/binding-linux-arm64-gnu@5.3.0': - optional: true - - '@oxc-resolver/binding-linux-arm64-musl@5.3.0': - optional: true - - '@oxc-resolver/binding-linux-riscv64-gnu@5.3.0': - optional: true - - '@oxc-resolver/binding-linux-s390x-gnu@5.3.0': - optional: true - - '@oxc-resolver/binding-linux-x64-gnu@5.3.0': - optional: true - - '@oxc-resolver/binding-linux-x64-musl@5.3.0': - optional: true - - '@oxc-resolver/binding-wasm32-wasi@5.3.0': - dependencies: - '@napi-rs/wasm-runtime': 0.2.12 - optional: true - - '@oxc-resolver/binding-win32-arm64-msvc@5.3.0': - optional: true - - '@oxc-resolver/binding-win32-x64-msvc@5.3.0': - optional: true - '@panva/asn1.js@1.0.0': {} '@paralleldrive/cuid2@2.2.2': @@ -20245,16 +17479,9 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true - '@phenomnomnominal/tsquery@5.0.1(typescript@5.9.2)': - dependencies: - esquery: 1.6.0 - typescript: 5.9.2 - '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.2.9': {} - '@playwright/test@1.55.0': dependencies: playwright: 1.55.0 @@ -20960,18 +18187,8 @@ snapshots: '@sinclair/typebox@0.31.28': {} - '@sinclair/typebox@0.34.38': {} - '@sindresorhus/is@4.6.0': {} - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@13.0.5': - dependencies: - '@sinonjs/commons': 3.0.1 - '@smithy/abort-controller@4.0.4': dependencies: '@smithy/types': 4.3.1 @@ -21358,34 +18575,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@swc-node/core@1.14.1(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)': - dependencies: - '@swc/core': 1.11.29(@swc/helpers@0.5.17) - '@swc/types': 0.1.21 - optional: true - - '@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2)': - dependencies: - '@swc-node/core': 1.14.1(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21) - '@swc-node/sourcemap-support': 0.5.1 - '@swc/core': 1.11.29(@swc/helpers@0.5.17) - colorette: 2.0.20 - debug: 4.4.1(supports-color@6.0.0) - oxc-resolver: 5.3.0 - pirates: 4.0.7 - tslib: 2.8.1 - typescript: 5.9.2 - transitivePeerDependencies: - - '@swc/types' - - supports-color - optional: true - - '@swc-node/sourcemap-support@0.5.1': - dependencies: - source-map-support: 0.5.21 - tslib: 2.8.1 - optional: true - '@swc/core-darwin-arm64@1.11.29': optional: true @@ -21438,6 +18627,7 @@ snapshots: '@swc/helpers@0.5.17': dependencies: tslib: 2.8.1 + optional: true '@swc/types@0.1.21': dependencies: @@ -21583,10 +18773,6 @@ snapshots: tslib: 2.8.1 optional: true - '@tybys/wasm-util@0.9.0': - dependencies: - tslib: 2.8.1 - '@types/appdmg@0.5.5': dependencies: '@types/node': 22.18.0 @@ -21600,27 +18786,6 @@ snapshots: '@types/aria-query@5.0.4': {} - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.28.1 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 - - '@types/babel__traverse@7.20.7': - dependencies: - '@babel/types': 7.28.1 - '@types/better-sqlite3@7.6.13': dependencies: '@types/node': 22.15.21 @@ -21897,16 +19062,6 @@ snapshots: '@types/ini@4.1.1': {} - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - '@types/jquery@3.5.33': dependencies: '@types/sizzle': 2.3.9 @@ -22087,8 +19242,6 @@ snapshots: dependencies: '@types/node': 22.18.0 - '@types/stack-utils@2.0.3': {} - '@types/statuses@2.0.6': optional: true @@ -22221,15 +19374,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.38.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.9.2) - '@typescript-eslint/types': 8.38.0 - debug: 4.4.1(supports-color@6.0.0) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.40.0(typescript@5.9.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.40.0(typescript@5.9.2) @@ -22248,11 +19392,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.38.0': - dependencies: - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 - '@typescript-eslint/scope-manager@8.40.0': dependencies: '@typescript-eslint/types': 8.40.0 @@ -22263,10 +19402,6 @@ snapshots: '@typescript-eslint/types': 8.41.0 '@typescript-eslint/visitor-keys': 8.41.0 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.9.2)': - dependencies: - typescript: 5.9.2 - '@typescript-eslint/tsconfig-utils@8.40.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 @@ -22275,18 +19410,6 @@ snapshots: dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.38.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': - dependencies: - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.38.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - debug: 4.4.1(supports-color@6.0.0) - eslint: 9.34.0(jiti@2.5.1) - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.40.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.40.0 @@ -22311,28 +19434,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.38.0': {} - '@typescript-eslint/types@8.40.0': {} '@typescript-eslint/types@8.41.0': {} - '@typescript-eslint/typescript-estree@8.38.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/project-service': 8.38.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.9.2) - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 - debug: 4.4.1(supports-color@6.0.0) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.40.0(typescript@5.9.2)': dependencies: '@typescript-eslint/project-service': 8.40.0(typescript@5.9.2) @@ -22365,17 +19470,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.38.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.9.2) - eslint: 9.34.0(jiti@2.5.1) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.40.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) @@ -22398,11 +19492,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.38.0': - dependencies: - '@typescript-eslint/types': 8.38.0 - eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.40.0': dependencies: '@typescript-eslint/types': 8.40.0 @@ -22415,65 +19504,6 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - optional: true - - '@unrs/resolver-binding-android-arm64@1.11.1': - optional: true - - '@unrs/resolver-binding-darwin-arm64@1.11.1': - optional: true - - '@unrs/resolver-binding-darwin-x64@1.11.1': - optional: true - - '@unrs/resolver-binding-freebsd-x64@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - dependencies: - '@napi-rs/wasm-runtime': 0.2.12 - optional: true - - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - optional: true - - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - optional: true - - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - optional: true - '@uploadcare/file-uploader@1.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: '@symbiotejs/symbiote': 1.11.7 @@ -22793,19 +19823,8 @@ snapshots: '@xtuc/long@4.2.2': {} - '@yarnpkg/lockfile@1.1.0': {} - - '@yarnpkg/parsers@3.0.2': - dependencies: - js-yaml: 3.14.1 - tslib: 2.8.1 - '@zip.js/zip.js@2.7.72': {} - '@zkochan/js-yaml@0.0.7': - dependencies: - argparse: 2.0.1 - abab@2.0.6: {} abbrev@1.1.1: {} @@ -22857,8 +19876,6 @@ snapshots: acorn@8.15.0: {} - address@1.2.2: {} - agent-base@6.0.2: dependencies: debug: 4.4.1(supports-color@6.0.0) @@ -22935,11 +19952,10 @@ snapshots: ansi-colors@3.2.3: {} - ansi-colors@4.1.3: {} - ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 + optional: true ansi-escapes@5.0.0: dependencies: @@ -23135,110 +20151,17 @@ snapshots: b4a@1.6.7: {} - babel-jest@30.0.5(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@jest/transform': 30.0.5 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.0 - babel-preset-jest: 30.0.1(@babel/core@7.28.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-const-enum@1.2.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@7.0.0: - dependencies: - '@babel/helper-plugin-utils': 7.27.1 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 6.0.3 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@30.0.1: - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.1 - '@types/babel__core': 7.20.5 - babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.27.6 cosmiconfig: 7.1.0 resolve: 1.22.10 - - babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.28.0): - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.28.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.28.0) - core-js-compat: 3.41.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color + optional: true babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.0): dependencies: '@babel/core': 7.28.0 - babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.28.0)(@babel/traverse@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optionalDependencies: - '@babel/traverse': 7.28.0 - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.28.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) - - babel-preset-jest@30.0.1(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - babel-plugin-jest-hoist: 30.0.1 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) - bail@2.0.2: {} balanced-match@1.0.2: {} @@ -23408,10 +20331,6 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - buffer-alloc-unsafe@1.1.0: {} buffer-alloc@1.2.0: @@ -23609,8 +20528,6 @@ snapshots: chalk@5.6.0: {} - char-regex@1.0.2: {} - character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -23710,15 +20627,9 @@ snapshots: chrome-trace-event@1.0.4: {} - ci-info@4.3.0: {} - - cjs-module-lexer@2.1.0: {} - ckeditor5-collaboration@46.0.2: dependencies: '@ckeditor/ckeditor5-collaboration-core': 46.0.2 - transitivePeerDependencies: - - supports-color ckeditor5-premium-features@46.0.2(bufferutil@4.0.9)(ckeditor5@46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41))(utf-8-validate@6.0.5): dependencies: @@ -23833,8 +20744,6 @@ snapshots: dependencies: restore-cursor: 5.1.0 - cli-spinners@2.6.1: {} - cli-spinners@2.9.2: {} cli-spinners@3.2.0: {} @@ -23895,8 +20804,6 @@ snapshots: clsx@2.1.1: {} - co@4.6.0: {} - codemirror-lang-elixir@4.0.0: dependencies: '@codemirror/language': 6.11.0 @@ -23914,8 +20821,6 @@ snapshots: '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - collect-v8-coverage@1.0.2: {} - color-convert@0.5.3: optional: true @@ -23953,11 +20858,6 @@ snapshots: colors@1.4.0: {} - columnify@1.6.0: - dependencies: - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -24044,8 +20944,6 @@ snapshots: confbox@0.2.2: {} - confusing-browser-globals@1.0.11: {} - connect-history-api-fallback@2.0.0: {} consola@3.4.0: {} @@ -24089,18 +20987,14 @@ snapshots: is-what: 3.14.1 optional: true - copy-webpack-plugin@13.0.1(webpack@5.100.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.9)): + copy-webpack-plugin@13.0.1(webpack@5.100.2(esbuild@0.25.9)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 tinyglobby: 0.2.14 - webpack: 5.100.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.9) - - core-js-compat@3.41.0: - dependencies: - browserslist: 4.25.1 + webpack: 5.100.2(esbuild@0.25.9) core-util-is@1.0.3: {} @@ -24738,10 +21632,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.1: - dependencies: - ms: 2.1.2 - debug@4.3.7: dependencies: ms: 2.1.3 @@ -24780,10 +21670,6 @@ snapshots: optionalDependencies: babel-plugin-macros: 3.1.0 - dedent@1.6.0(babel-plugin-macros@3.1.0): - optionalDependencies: - babel-plugin-macros: 3.1.0 - deep-eql@5.0.2: {} deep-equal@1.1.2: @@ -24822,8 +21708,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - define-lazy-prop@2.0.0: {} - define-lazy-prop@3.0.0: {} define-properties@1.2.1: @@ -24882,8 +21766,6 @@ snapshots: detect-libc@2.0.4: {} - detect-newline@3.1.0: {} - detect-node-es@1.1.0: {} detect-node@2.1.0: {} @@ -24892,13 +21774,6 @@ snapshots: detect-pointer@1.0.3: {} - detect-port@1.6.1: - dependencies: - address: 1.2.2 - debug: 4.4.1(supports-color@6.0.0) - transitivePeerDependencies: - - supports-color - detect-touch-events@2.0.2: {} devalue@5.3.2: {} @@ -24981,12 +21856,6 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dotenv-expand@11.0.7: - dependencies: - dotenv: 16.4.7 - - dotenv@16.4.7: {} - dotenv@17.2.1: {} dotignore@0.1.2: @@ -25171,8 +22040,6 @@ snapshots: dependencies: shimmer: 1.2.1 - emittery@0.13.1: {} - emoji-regex@10.4.0: {} emoji-regex@7.0.3: {} @@ -25232,10 +22099,6 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.2 - enquirer@2.3.6: - dependencies: - ansi-colors: 4.1.3 - entities@2.2.0: {} entities@4.5.0: {} @@ -25398,8 +22261,6 @@ snapshots: escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} - escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -25607,21 +22468,10 @@ snapshots: exif-parser@0.1.12: {} - exit-x@0.2.2: {} - expand-template@2.0.3: {} expect-type@1.2.1: {} - expect@30.0.5: - dependencies: - '@jest/expect-utils': 30.0.5 - '@jest/get-type': 30.0.1 - jest-matcher-utils: 30.0.5 - jest-message-util: 30.0.5 - jest-mock: 30.0.5 - jest-util: 30.0.5 - exponential-backoff@3.1.2: {} express-http-proxy@2.1.1: @@ -25806,10 +22656,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -25833,10 +22679,6 @@ snapshots: fflate@0.8.2: {} - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - file-entry-cache@10.1.3: dependencies: flat-cache: 6.1.12 @@ -26021,12 +22863,6 @@ snapshots: fresh@2.0.0: {} - front-matter@4.0.2: - dependencies: - js-yaml: 3.14.1 - - fs-constants@1.0.0: {} - fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -26190,8 +23026,6 @@ snapshots: transitivePeerDependencies: - supports-color - get-package-type@0.1.0: {} - get-port@7.1.0: {} get-proto@1.0.1: @@ -26217,8 +23051,6 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-them-args@1.3.2: {} - get-tsconfig@4.10.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -26413,8 +23245,6 @@ snapshots: '@types/whatwg-mimetype': 3.0.2 whatwg-mimetype: 3.0.0 - harmony-reflect@1.6.2: {} - has-bigints@1.1.0: {} has-flag@3.0.0: {} @@ -26579,10 +23409,6 @@ snapshots: hosted-git-info@2.8.9: {} - hosted-git-info@7.0.2: - dependencies: - lru-cache: 10.4.3 - hosted-git-info@8.1.0: dependencies: lru-cache: 10.4.3 @@ -26801,10 +23627,6 @@ snapshots: dependencies: postcss: 8.5.6 - identity-obj-proxy@3.0.0: - dependencies: - harmony-reflect: 1.6.2 - ieee754@1.2.1: {} ignore-walk@7.0.0: @@ -26906,8 +23728,6 @@ snapshots: jsbn: 1.1.0 sprintf-js: 1.1.3 - ip-regex@4.3.0: {} - ipaddr.js@1.9.1: {} ipaddr.js@2.2.0: {} @@ -26965,8 +23785,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-docker@2.2.1: {} - is-docker@3.0.0: {} is-extendable@0.1.1: {} @@ -26987,8 +23805,6 @@ snapshots: dependencies: get-east-asian-width: 1.3.0 - is-generator-fn@2.1.0: {} - is-generator-function@1.1.0: dependencies: call-bound: 1.0.4 @@ -27110,8 +23926,6 @@ snapshots: is-unicode-supported@0.1.0: {} - is-url@1.2.4: {} - is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -27126,20 +23940,10 @@ snapshots: is-what@3.14.1: optional: true - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 - is2@2.0.9: - dependencies: - deep-is: 0.1.4 - ip-regex: 4.3.0 - is-url: 1.2.4 - isarray@0.0.1: {} isarray@1.0.0: {} @@ -27202,265 +24006,6 @@ snapshots: javascript-stringify@1.6.0: {} - jest-circus@30.0.5(babel-plugin-macros@3.1.0): - dependencies: - '@jest/environment': 30.0.5 - '@jest/expect': 30.0.5 - '@jest/test-result': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.6.0(babel-plugin-macros@3.1.0) - is-generator-fn: 2.1.0 - jest-each: 30.0.5 - jest-matcher-utils: 30.0.5 - jest-message-util: 30.0.5 - jest-runtime: 30.0.5 - jest-snapshot: 30.0.5 - jest-util: 30.0.5 - p-limit: 3.1.0 - pretty-format: 30.0.5 - pure-rand: 7.0.1 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@30.0.5(@types/node@22.18.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2)): - dependencies: - '@babel/core': 7.28.0 - '@jest/get-type': 30.0.1 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.0.5 - '@jest/types': 30.0.5 - babel-jest: 30.0.5(@babel/core@7.28.0) - chalk: 4.1.2 - ci-info: 4.3.0 - deepmerge: 4.3.1 - glob: 10.4.5 - graceful-fs: 4.2.11 - jest-circus: 30.0.5(babel-plugin-macros@3.1.0) - jest-docblock: 30.0.1 - jest-environment-node: 30.0.5 - jest-regex-util: 30.0.1 - jest-resolve: 30.0.5 - jest-runner: 30.0.5 - jest-util: 30.0.5 - jest-validate: 30.0.5 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.0.5 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.18.0 - ts-node: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.0)(typescript@5.9.2) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@30.0.5: - dependencies: - '@jest/diff-sequences': 30.0.1 - '@jest/get-type': 30.0.1 - chalk: 4.1.2 - pretty-format: 30.0.5 - - jest-docblock@30.0.1: - dependencies: - detect-newline: 3.1.0 - - jest-each@30.0.5: - dependencies: - '@jest/get-type': 30.0.1 - '@jest/types': 30.0.5 - chalk: 4.1.2 - jest-util: 30.0.5 - pretty-format: 30.0.5 - - jest-environment-node@30.0.5: - dependencies: - '@jest/environment': 30.0.5 - '@jest/fake-timers': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - jest-mock: 30.0.5 - jest-util: 30.0.5 - jest-validate: 30.0.5 - - jest-haste-map@30.0.5: - dependencies: - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 30.0.1 - jest-util: 30.0.5 - jest-worker: 30.0.5 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-leak-detector@30.0.5: - dependencies: - '@jest/get-type': 30.0.1 - pretty-format: 30.0.5 - - jest-matcher-utils@30.0.5: - dependencies: - '@jest/get-type': 30.0.1 - chalk: 4.1.2 - jest-diff: 30.0.5 - pretty-format: 30.0.5 - - jest-message-util@30.0.5: - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 30.0.5 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 30.0.5 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock@30.0.5: - dependencies: - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - jest-util: 30.0.5 - - jest-pnp-resolver@1.2.3(jest-resolve@30.0.5): - optionalDependencies: - jest-resolve: 30.0.5 - - jest-regex-util@30.0.1: {} - - jest-resolve@30.0.5: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 30.0.5 - jest-pnp-resolver: 1.2.3(jest-resolve@30.0.5) - jest-util: 30.0.5 - jest-validate: 30.0.5 - slash: 3.0.0 - unrs-resolver: 1.11.1 - - jest-runner@30.0.5: - dependencies: - '@jest/console': 30.0.5 - '@jest/environment': 30.0.5 - '@jest/test-result': 30.0.5 - '@jest/transform': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - chalk: 4.1.2 - emittery: 0.13.1 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-docblock: 30.0.1 - jest-environment-node: 30.0.5 - jest-haste-map: 30.0.5 - jest-leak-detector: 30.0.5 - jest-message-util: 30.0.5 - jest-resolve: 30.0.5 - jest-runtime: 30.0.5 - jest-util: 30.0.5 - jest-watcher: 30.0.5 - jest-worker: 30.0.5 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - - jest-runtime@30.0.5: - dependencies: - '@jest/environment': 30.0.5 - '@jest/fake-timers': 30.0.5 - '@jest/globals': 30.0.5 - '@jest/source-map': 30.0.1 - '@jest/test-result': 30.0.5 - '@jest/transform': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - chalk: 4.1.2 - cjs-module-lexer: 2.1.0 - collect-v8-coverage: 1.0.2 - glob: 10.4.5 - graceful-fs: 4.2.11 - jest-haste-map: 30.0.5 - jest-message-util: 30.0.5 - jest-mock: 30.0.5 - jest-regex-util: 30.0.1 - jest-resolve: 30.0.5 - jest-snapshot: 30.0.5 - jest-util: 30.0.5 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - - jest-snapshot@30.0.5: - dependencies: - '@babel/core': 7.28.0 - '@babel/generator': 7.28.0 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/types': 7.28.1 - '@jest/expect-utils': 30.0.5 - '@jest/get-type': 30.0.1 - '@jest/snapshot-utils': 30.0.5 - '@jest/transform': 30.0.5 - '@jest/types': 30.0.5 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) - chalk: 4.1.2 - expect: 30.0.5 - graceful-fs: 4.2.11 - jest-diff: 30.0.5 - jest-matcher-utils: 30.0.5 - jest-message-util: 30.0.5 - jest-util: 30.0.5 - pretty-format: 30.0.5 - semver: 7.7.2 - synckit: 0.11.11 - transitivePeerDependencies: - - supports-color - - jest-util@30.0.5: - dependencies: - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - chalk: 4.1.2 - ci-info: 4.3.0 - graceful-fs: 4.2.11 - picomatch: 4.0.3 - - jest-validate@30.0.5: - dependencies: - '@jest/get-type': 30.0.1 - '@jest/types': 30.0.5 - camelcase: 6.3.0 - chalk: 4.1.2 - leven: 3.1.0 - pretty-format: 30.0.5 - - jest-watcher@30.0.5: - dependencies: - '@jest/test-result': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 22.18.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 30.0.5 - string-length: 4.0.2 - jest-worker@26.6.2: dependencies: '@types/node': 22.18.0 @@ -27473,14 +24018,6 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest-worker@30.0.5: - dependencies: - '@types/node': 22.18.0 - '@ungap/structured-clone': 1.3.0 - jest-util: 30.0.5 - merge-stream: 2.0.0 - supports-color: 8.1.1 - jimp@1.6.0: dependencies: '@jimp/core': 1.6.0 @@ -27560,11 +24097,6 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -27634,8 +24166,6 @@ snapshots: - supports-color - utf-8-validate - jsesc@3.0.2: {} - jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -27664,8 +24194,6 @@ snapshots: espree: 9.6.1 semver: 7.7.1 - jsonc-parser@3.2.0: {} - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -27718,11 +24246,6 @@ snapshots: khroma@2.1.0: {} - kill-port@1.6.1: - dependencies: - get-them-args: 1.3.2 - shell-exec: 1.0.2 - kind-of@6.0.3: {} kleur@4.1.5: {} @@ -27777,8 +24300,6 @@ snapshots: source-map: 0.6.1 optional: true - leven@3.1.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -27846,8 +24367,6 @@ snapshots: lines-and-columns@1.2.4: {} - lines-and-columns@2.0.3: {} - lint-staged@16.1.5: dependencies: chalk: 5.5.0 @@ -28113,10 +24632,6 @@ snapshots: - supports-color optional: true - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - map-age-cleaner@0.1.3: dependencies: p-defer: 1.0.0 @@ -28631,10 +25146,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.2 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 @@ -28793,8 +25304,6 @@ snapshots: ms@2.1.1: {} - ms@2.1.2: {} - ms@2.1.3: {} msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2): @@ -28870,8 +25379,6 @@ snapshots: napi-build-utils@2.0.0: {} - napi-postinstall@0.3.2: {} - natural-compare@1.4.0: {} needle@3.3.1: @@ -28969,10 +25476,6 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-int64@0.4.0: {} - - node-machine-id@1.1.12: {} - node-releases@2.0.19: {} nopt@5.0.0: @@ -29013,13 +25516,6 @@ snapshots: npm-normalize-package-bin@4.0.0: {} - npm-package-arg@11.0.1: - dependencies: - hosted-git-info: 7.0.2 - proc-log: 3.0.0 - semver: 7.7.2 - validate-npm-package-name: 5.0.1 - npm-package-arg@12.0.2: dependencies: hosted-git-info: 8.1.0 @@ -29073,59 +25569,6 @@ snapshots: nwsapi@2.2.20: {} - nx@21.3.11(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.17)): - dependencies: - '@napi-rs/wasm-runtime': 0.2.4 - '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.2 - '@zkochan/js-yaml': 0.0.7 - axios: 1.11.0(debug@4.4.1) - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.6.1 - cliui: 8.0.1 - dotenv: 16.4.7 - dotenv-expand: 11.0.7 - enquirer: 2.3.6 - figures: 3.2.0 - flat: 5.0.2 - front-matter: 4.0.2 - ignore: 5.3.2 - jest-diff: 30.0.5 - jsonc-parser: 3.2.0 - lines-and-columns: 2.0.3 - minimatch: 9.0.3 - node-machine-id: 1.1.12 - npm-run-path: 4.0.1 - open: 8.4.2 - ora: 5.3.0 - resolve.exports: 2.0.3 - semver: 7.7.2 - string-width: 4.2.3 - tar-stream: 2.2.0 - tmp: 0.2.5 - tree-kill: 1.2.2 - tsconfig-paths: 4.2.0 - tslib: 2.8.1 - yaml: 2.8.0 - yargs: 17.7.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@nx/nx-darwin-arm64': 21.3.11 - '@nx/nx-darwin-x64': 21.3.11 - '@nx/nx-freebsd-x64': 21.3.11 - '@nx/nx-linux-arm-gnueabihf': 21.3.11 - '@nx/nx-linux-arm64-gnu': 21.3.11 - '@nx/nx-linux-arm64-musl': 21.3.11 - '@nx/nx-linux-x64-gnu': 21.3.11 - '@nx/nx-linux-x64-musl': 21.3.11 - '@nx/nx-win32-arm64-msvc': 21.3.11 - '@nx/nx-win32-x64-msvc': 21.3.11 - '@swc-node/register': 1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.9.2) - '@swc/core': 1.11.29(@swc/helpers@0.5.17) - transitivePeerDependencies: - - debug - object-assign@4.1.1: {} object-hash@2.2.0: {} @@ -29204,12 +25647,6 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - openai@5.12.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4): optionalDependencies: ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -29238,17 +25675,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.3.0: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - ora@5.4.1: dependencies: bl: 4.1.0 @@ -29270,23 +25696,6 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - oxc-resolver@5.3.0: - optionalDependencies: - '@oxc-resolver/binding-darwin-arm64': 5.3.0 - '@oxc-resolver/binding-darwin-x64': 5.3.0 - '@oxc-resolver/binding-freebsd-x64': 5.3.0 - '@oxc-resolver/binding-linux-arm-gnueabihf': 5.3.0 - '@oxc-resolver/binding-linux-arm64-gnu': 5.3.0 - '@oxc-resolver/binding-linux-arm64-musl': 5.3.0 - '@oxc-resolver/binding-linux-riscv64-gnu': 5.3.0 - '@oxc-resolver/binding-linux-s390x-gnu': 5.3.0 - '@oxc-resolver/binding-linux-x64-gnu': 5.3.0 - '@oxc-resolver/binding-linux-x64-musl': 5.3.0 - '@oxc-resolver/binding-wasm32-wasi': 5.3.0 - '@oxc-resolver/binding-win32-arm64-msvc': 5.3.0 - '@oxc-resolver/binding-win32-x64-msvc': 5.3.0 - optional: true - p-cancelable@2.1.1: {} p-defer@1.0.0: {} @@ -29554,8 +25963,6 @@ snapshots: pify@4.0.1: optional: true - pirates@4.0.7: {} - pixelmatch@5.3.0: dependencies: pngjs: 6.0.0 @@ -30437,20 +26844,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 - pretty-format@30.0.5: - dependencies: - '@jest/schemas': 30.0.5 - ansi-styles: 5.2.0 - react-is: 18.3.1 - prism-svelte@0.4.7: {} prismjs@1.30.0: {} proc-log@2.0.1: {} - proc-log@3.0.0: {} - proc-log@5.0.0: {} process-nextick-args@2.0.1: {} @@ -30534,8 +26933,6 @@ snapshots: dependencies: escape-goat: 4.0.0 - pure-rand@7.0.1: {} - purgecss@6.0.0: dependencies: commander: 12.1.0 @@ -30651,8 +27048,6 @@ snapshots: react-is@17.0.2: {} - react-is@18.3.1: {} - react-refresh@0.17.0: {} react-remove-scroll-bar@2.3.8(@types/react@19.1.7)(react@16.14.0): @@ -30791,16 +27186,6 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 - regenerate-unicode-properties@10.2.0: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.27.6 - regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -30810,21 +27195,6 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - regexpu-core@6.2.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.12.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - - regjsgen@0.8.0: {} - - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - rehype-dom-parse@5.0.2: dependencies: '@types/hast': 3.0.4 @@ -31485,8 +27855,6 @@ snapshots: shebang-regex@3.0.0: {} - shell-exec@1.0.2: {} - shell-quote@1.8.3: {} shelljs@0.10.0: @@ -31676,16 +28044,6 @@ snapshots: source-map-js@1.2.1: {} - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map-support@0.5.19: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -31786,10 +28144,6 @@ snapshots: stack-trace@1.0.0-pre2: {} - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - stackback@0.0.2: {} statuses@1.5.0: {} @@ -31832,11 +28186,6 @@ snapshots: string-argv@0.3.2: {} - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - string-width@2.1.1: dependencies: is-fullwidth-code-point: 2.0.0 @@ -31920,8 +28269,6 @@ snapshots: strip-bom@3.0.0: {} - strip-bom@4.0.0: {} - strip-bom@5.0.0: {} strip-eof@1.0.0: {} @@ -32282,10 +28629,6 @@ snapshots: sync-message-port@1.1.3: optional: true - synckit@0.11.11: - dependencies: - '@pkgr/core': 0.2.9 - table@6.9.0: dependencies: ajv: 8.17.1 @@ -32329,14 +28672,6 @@ snapshots: transitivePeerDependencies: - bare-buffer - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - tar-stream@3.1.7: dependencies: b4a: 1.6.7 @@ -32361,13 +28696,6 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 - tcp-port-used@1.0.2: - dependencies: - debug: 4.3.1 - is2: 2.0.9 - transitivePeerDependencies: - - supports-color - temp@0.9.4: dependencies: mkdirp: 0.5.6 @@ -32401,6 +28729,17 @@ snapshots: '@swc/core': 1.11.29(@swc/helpers@0.5.17) esbuild: 0.25.9 + terser-webpack-plugin@5.3.14(esbuild@0.25.9)(webpack@5.100.2(esbuild@0.25.9)): + dependencies: + '@jridgewell/trace-mapping': 0.3.29 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.43.1 + webpack: 5.100.2(esbuild@0.25.9) + optionalDependencies: + esbuild: 0.25.9 + terser@5.39.0: dependencies: '@jridgewell/source-map': 0.3.6 @@ -32415,12 +28754,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - test-exclude@7.0.1: dependencies: '@istanbuljs/schema': 0.1.3 @@ -32487,8 +28820,6 @@ snapshots: tmp@0.2.5: {} - tmpl@1.0.5: {} - tn1150@0.1.0: dependencies: unorm: 1.6.0 @@ -32540,8 +28871,6 @@ snapshots: dependencies: tslib: 2.8.1 - tree-kill@1.2.2: {} - trim-lines@3.0.1: {} trim-repeated@1.0.0: @@ -32633,12 +28962,6 @@ snapshots: '@swc/core': 1.11.29(@swc/helpers@0.5.17) optional: true - tsconfig-paths@4.2.0: - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - tslib@2.8.1: {} tsx@4.20.5: @@ -32686,14 +29009,13 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} - type-fest@0.13.1: optional: true type-fest@0.20.2: {} - type-fest@0.21.3: {} + type-fest@0.21.3: + optional: true type-fest@1.4.0: {} @@ -32773,8 +29095,6 @@ snapshots: typescript@5.8.2: {} - typescript@5.8.3: {} - typescript@5.9.2: {} ufo@1.6.1: {} @@ -32807,17 +29127,6 @@ snapshots: dependencies: extend-shallow: 2.0.1 - unicode-canonical-property-names-ecmascript@2.0.1: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.2.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - unidragger@3.0.1: dependencies: ev-emitter: 2.1.2 @@ -32922,30 +29231,6 @@ snapshots: picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - unrs-resolver@1.11.1: - dependencies: - napi-postinstall: 0.3.2 - optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.11.1 - '@unrs/resolver-binding-android-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-x64': 1.11.1 - '@unrs/resolver-binding-freebsd-x64': 1.11.1 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 - '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-musl': 1.11.1 - '@unrs/resolver-binding-wasm32-wasi': 1.11.1 - '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 - '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 - '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - unused-filename@4.0.1: dependencies: escape-string-regexp: 5.0.0 @@ -33023,19 +29308,11 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.29 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@5.0.1: {} - validate-npm-package-name@6.0.2: {} validator@13.15.0: {} @@ -33290,10 +29567,6 @@ snapshots: transitivePeerDependencies: - supports-color - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - warning@4.0.3: dependencies: loose-envify: 1.4.0 @@ -33470,6 +29743,38 @@ snapshots: - esbuild - uglify-js + webpack@5.100.2(esbuild@0.25.9): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.25.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.2 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.2 + terser-webpack-plugin: 5.3.14(esbuild@0.25.9)(webpack@5.100.2(esbuild@0.25.9)) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + websocket-driver@0.7.4: dependencies: http-parser-js: 0.5.10 @@ -33692,8 +29997,6 @@ snapshots: yaml@2.0.0-1: {} - yaml@2.8.0: {} - yaml@2.8.1: {} yargs-parser@13.1.2: From aa316091e662381b005a403451609dfc6c4bdd47 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 16:41:03 +0300 Subject: [PATCH 02/85] chore(dx): fix cannot read properties of undefined if DB dir is missing --- apps/server/src/services/resource_dir.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/server/src/services/resource_dir.ts b/apps/server/src/services/resource_dir.ts index c274b43ce..35c056af2 100644 --- a/apps/server/src/services/resource_dir.ts +++ b/apps/server/src/services/resource_dir.ts @@ -1,4 +1,3 @@ -import log from "./log.js"; import path from "path"; import fs from "fs"; @@ -10,7 +9,7 @@ const ELECTRON_APP_ROOT_DIR = path.resolve(RESOURCE_DIR, "../.."); const DB_INIT_DIR = path.resolve(RESOURCE_DIR, "db"); if (!fs.existsSync(DB_INIT_DIR)) { - log.error(`Could not find DB initialization directory: ${DB_INIT_DIR}`); + console.error(`Could not find DB initialization directory: ${DB_INIT_DIR}`); process.exit(1); } From 4739e2e3b265bd2e6f7e603bb0e380f613186d7e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 16:52:32 +0300 Subject: [PATCH 03/85] chore(dx/server): remove dependency on CKEditor for now --- apps/server/src/services/export/zip.ts | 3 --- apps/server/src/types.d.ts | 6 ------ 2 files changed, 9 deletions(-) diff --git a/apps/server/src/services/export/zip.ts b/apps/server/src/services/export/zip.ts index 9d3e73d25..58ab7074f 100644 --- a/apps/server/src/services/export/zip.ts +++ b/apps/server/src/services/export/zip.ts @@ -21,7 +21,6 @@ import type AttributeMeta from "../meta/attribute_meta.js"; import type BBranch from "../../becca/entities/bbranch.js"; import type { Response } from "express"; import type { NoteMetaFile } from "../meta/note_meta.js"; -import cssContent from "@triliumnext/ckeditor5/content.css"; type RewriteLinksFn = (content: string, noteMeta: NoteMeta) => string; @@ -514,8 +513,6 @@ ${markdownContent}`; if (!cssMeta.dataFileName) { return; } - - archive.append(cssContent, { name: cssMeta.dataFileName }); } try { diff --git a/apps/server/src/types.d.ts b/apps/server/src/types.d.ts index c302e27d8..4bcac86d2 100644 --- a/apps/server/src/types.d.ts +++ b/apps/server/src/types.d.ts @@ -23,12 +23,6 @@ declare module "is-animated" { export default isAnimated; } -declare module "@triliumnext/ckeditor5/content.css" { - const content: string; - export default content; -} - - declare module "@triliumnext/share-theme/*.ejs" { const content: string; export default content; From 63c0841c32b3da96cb14ee5b6374afeb0859a523 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 16:58:57 +0300 Subject: [PATCH 04/85] chore(dx/server): get server to run up to missing public server --- apps/server/package.json | 15 +++------------ packages/commons/package.json | 13 +------------ packages/express-partial-content/package.json | 13 +------------ packages/turndown-plugin-gfm/package.json | 13 +------------ 4 files changed, 6 insertions(+), 48 deletions(-) diff --git a/apps/server/package.json b/apps/server/package.json index a36d33d01..d9232fca4 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -360,17 +360,8 @@ } } }, - "exports": { - "./package.json": "./package.json", - "./src/*": "./src/*", - ".": { - "development": "./src/main.ts", - "types": "./dist/main.d.ts", - "import": "./dist/main.js", - "default": "./dist/main.js" - } + "scripts": { + "dev": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch ./src/main.ts" }, - "types": "./dist/main.d.ts", - "module": "./dist/main.js", - "main": "./dist/main.js" + "main": "./src/main.ts" } \ No newline at end of file diff --git a/packages/commons/package.json b/packages/commons/package.json index eff04806c..8b9be2e0a 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -4,18 +4,7 @@ "description": "Shared library between the clients (e.g. browser, Electron) and the server, mostly for type definitions and utility methods.", "private": true, "type": "module", - "main": "./dist/main.js", - "module": "./dist/main.js", - "types": "./dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "development": "./src/index.ts", - "types": "./dist/index.d.ts", - "import": "./dist/main.js", - "default": "./dist/main.js" - } - }, + "main": "./src/index.ts", "license": "AGPL-3.0-only", "author": { "name": "Trilium Notes Team", diff --git a/packages/express-partial-content/package.json b/packages/express-partial-content/package.json index d4a78437b..437e4d40f 100644 --- a/packages/express-partial-content/package.json +++ b/packages/express-partial-content/package.json @@ -5,18 +5,7 @@ "version": "1.1.0", "type": "module", "private": true, - "main": "./dist/main.js", - "module": "./dist/main.js", - "types": "./dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "development": "./src/index.ts", - "types": "./dist/index.d.ts", - "import": "./dist/main.js", - "default": "./dist/main.js" - } - }, + "main": "./src/index.ts", "keywords": [ "partial-content", "206", diff --git a/packages/turndown-plugin-gfm/package.json b/packages/turndown-plugin-gfm/package.json index c50bbb1ba..1c9d2ab05 100644 --- a/packages/turndown-plugin-gfm/package.json +++ b/packages/turndown-plugin-gfm/package.json @@ -5,18 +5,7 @@ "author": "Dom Christie", "private": true, "type": "module", - "main": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "development": "./src/index.js", - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "default": "./dist/index.js" - } - }, + "main": "./src/index.js", "gitHead": "05a29b450962bf05a8642bbd39446a1f679a96ba", "license": "MIT", "repository": { From 113d36f5ddee2954e0033485b579164621fc0041 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 18:18:35 +0300 Subject: [PATCH 05/85] chore(dx/client): set paths for client dependencies --- packages/ckeditor5-admonition/package.json | 13 +------------ packages/ckeditor5-footnotes/package.json | 13 +------------ packages/ckeditor5-keyboard-marker/package.json | 13 +------------ packages/ckeditor5-math/package.json | 13 +------------ packages/ckeditor5-mermaid/package.json | 13 +------------ packages/ckeditor5/package.json | 16 +--------------- packages/highlightjs/package.json | 13 +------------ 7 files changed, 7 insertions(+), 87 deletions(-) diff --git a/packages/ckeditor5-admonition/package.json b/packages/ckeditor5-admonition/package.json index 2d84b2145..377abce2c 100644 --- a/packages/ckeditor5-admonition/package.json +++ b/packages/ckeditor5-admonition/package.json @@ -11,18 +11,7 @@ "ckeditor5-package-generator" ], "type": "module", - "main": "dist/index.ts", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, - "./*": "./dist/*", - "./browser/*": null, - "./package.json": "./package.json" - }, + "main": "src/index.ts", "engines": { "node": ">=18.0.0", "npm": ">=5.7.1" diff --git a/packages/ckeditor5-footnotes/package.json b/packages/ckeditor5-footnotes/package.json index 0755f8c30..b2eb2e16b 100644 --- a/packages/ckeditor5-footnotes/package.json +++ b/packages/ckeditor5-footnotes/package.json @@ -11,18 +11,7 @@ "ckeditor5-package-generator" ], "type": "module", - "main": "dist/index.ts", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, - "./*": "./dist/*", - "./browser/*": null, - "./package.json": "./package.json" - }, + "main": "src/index.ts", "license": "ISC", "engines": { "node": ">=18.0.0", diff --git a/packages/ckeditor5-keyboard-marker/package.json b/packages/ckeditor5-keyboard-marker/package.json index 5024f813e..e4f34f135 100644 --- a/packages/ckeditor5-keyboard-marker/package.json +++ b/packages/ckeditor5-keyboard-marker/package.json @@ -11,18 +11,7 @@ "ckeditor5-package-generator" ], "type": "module", - "main": "dist/index.ts", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, - "./*": "./dist/*", - "./browser/*": null, - "./package.json": "./package.json" - }, + "main": "src/index.ts", "author": "Marek Lewandowski", "license": "GPL-3.0", "homepage": "https://github.com/mlewand/ckeditor5-keyboard-marker", diff --git a/packages/ckeditor5-math/package.json b/packages/ckeditor5-math/package.json index 7c58f2c78..a6f30aba3 100644 --- a/packages/ckeditor5-math/package.json +++ b/packages/ckeditor5-math/package.json @@ -12,18 +12,7 @@ "katex" ], "type": "module", - "main": "dist/index.ts", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, - "./*": "./dist/*", - "./browser/*": null, - "./package.json": "./package.json" - }, + "main": "src/index.ts", "author": "Sauli Anto", "license": "ISC", "engines": { diff --git a/packages/ckeditor5-mermaid/package.json b/packages/ckeditor5-mermaid/package.json index 16e82a001..41d4c1594 100644 --- a/packages/ckeditor5-mermaid/package.json +++ b/packages/ckeditor5-mermaid/package.json @@ -11,18 +11,7 @@ "ckeditor5-package-generator" ], "type": "module", - "main": "dist/index.ts", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, - "./*": "./dist/*", - "./browser/*": null, - "./package.json": "./package.json" - }, + "main": "src/index.ts", "license": "SEE LICENSE IN LICENSE.md", "author": "CKSource (https://cksource.com/)", "homepage": "https://github.com/ckeditor/ckeditor5-mermaid", diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index 49562a8cc..311e70b77 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -4,21 +4,7 @@ "version": "45.0.0", "private": true, "type": "module", - "main": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - "./emoji_definitions/": "./src/emoji_definitions/", - "./content.css": "./dist/content.css", - "./index.css": "./dist/index.css", - ".": { - "development": "./src/index.ts", - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "default": "./dist/index.js" - } - }, + "main": "./src/index.ts", "nx": { "name": "ckeditor5", "targets": { diff --git a/packages/highlightjs/package.json b/packages/highlightjs/package.json index c6eb24ed1..e2214e515 100644 --- a/packages/highlightjs/package.json +++ b/packages/highlightjs/package.json @@ -3,18 +3,7 @@ "version": "0.0.1", "private": true, "type": "module", - "main": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "development": "./src/index.ts", - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "default": "./dist/index.js" - } - }, + "main": "./src/index.ts", "nx": { "name": "highlightjs" }, From cc474f39d82ca05483a5931dab5e912853d01029 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 18:24:02 +0300 Subject: [PATCH 06/85] chore(dx/server): basic middleware integration for vite --- .../{vite.config.mts => vite.config.mts.bak} | 5 - apps/server/package.json | 17 +- apps/server/src/routes/assets.ts | 26 +- apps/server/src/services/asset_path.ts | 3 +- pnpm-lock.yaml | 947 +++++++++--------- 5 files changed, 499 insertions(+), 499 deletions(-) rename apps/client/{vite.config.mts => vite.config.mts.bak} (91%) diff --git a/apps/client/vite.config.mts b/apps/client/vite.config.mts.bak similarity index 91% rename from apps/client/vite.config.mts rename to apps/client/vite.config.mts.bak index 640313bff..72ef792ac 100644 --- a/apps/client/vite.config.mts +++ b/apps/client/vite.config.mts.bak @@ -41,11 +41,6 @@ export default defineConfig(() => ({ ] as Plugin[], resolve: { alias: [ - // Force the use of dist in development mode because upstream ESM is broken (some hybrid between CJS and ESM, will be improved in upcoming versions). - { - find: "@triliumnext/highlightjs", - replacement: resolve(__dirname, "node_modules/@triliumnext/highlightjs/dist") - }, { find: "react", replacement: "preact/compat" diff --git a/apps/server/package.json b/apps/server/package.json index d9232fca4..93fa686b0 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -7,7 +7,13 @@ "better-sqlite3": "12.2.0" }, "devDependencies": { + "@anthropic-ai/sdk": "0.60.0", + "@braintree/sanitize-url": "7.1.1", "@electron/remote": "2.1.3", + "@preact/preset-vite": "2.10.2", + "@triliumnext/commons": "workspace:*", + "@triliumnext/express-partial-content": "workspace:*", + "@triliumnext/turndown-plugin-gfm": "workspace:*", "@types/archiver": "6.0.3", "@types/better-sqlite3": "7.6.13", "@types/cls-hooked": "4.3.9", @@ -38,16 +44,11 @@ "@types/turndown": "5.0.5", "@types/ws": "8.18.1", "@types/xml2js": "0.4.14", - "express-http-proxy": "2.1.1", - "@anthropic-ai/sdk": "0.60.0", - "@braintree/sanitize-url": "7.1.1", - "@triliumnext/commons": "workspace:*", - "@triliumnext/express-partial-content": "workspace:*", - "@triliumnext/turndown-plugin-gfm": "workspace:*", "archiver": "7.0.1", "async-mutex": "0.5.0", "axios": "1.11.0", "bindings": "1.5.0", + "bootstrap": "5.3.8", "chardet": "2.1.0", "cheerio": "1.1.2", "chokidar": "4.0.3", @@ -64,6 +65,7 @@ "electron-window-state": "5.0.3", "escape-html": "1.0.3", "express": "5.1.0", + "express-http-proxy": "2.1.1", "express-openid-connect": "^2.17.1", "express-rate-limit": "8.0.1", "express-session": "1.18.2", @@ -105,6 +107,7 @@ "tmp": "0.2.5", "turndown": "7.2.1", "unescape": "1.0.1", + "vite": "^7.1.3", "ws": "8.18.3", "xml2js": "0.6.2", "yauzl": "3.2.0" @@ -361,7 +364,7 @@ } }, "scripts": { - "dev": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch ./src/main.ts" + "dev": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts" }, "main": "./src/main.ts" } \ No newline at end of file diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index d0de552fd..5484e0158 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -3,8 +3,9 @@ import path from "path"; import express from "express"; import { getResourceDir, isDev } from "../services/utils.js"; import type serveStatic from "serve-static"; -import proxy from "express-http-proxy"; import { existsSync } from "fs"; +import { createServer as createViteServer } from "vite"; +import preact from "@preact/preset-vite"; const persistentCacheStatic = (root: string, options?: serveStatic.ServeStaticOptions>>) => { if (!isDev) { @@ -17,17 +18,24 @@ const persistentCacheStatic = (root: string, options?: serveStatic.ServeStaticOp }; async function register(app: express.Application) { - const srcRoot = path.join(__dirname, ".."); + const srcRoot = path.join(__dirname, "..", ".."); const resourceDir = getResourceDir(); if (isDev) { - const publicUrl = process.env.TRILIUM_PUBLIC_SERVER; - if (!publicUrl) { - throw new Error("Missing TRILIUM_PUBLIC_SERVER"); - } - app.use("/" + assetUrlFragment + `/@fs`, proxy(publicUrl, { - proxyReqPathResolver: (req) => "/" + assetUrlFragment + `/@fs` + req.url - })); + const vite = await createViteServer({ + base: `/${assetUrlFragment}/`, + root: path.join(srcRoot, "../client"), + plugins: [ + preact() + ], + define: { + "process.env.IS_PREACT": JSON.stringify("true"), + } + }); + app.use(`/${assetUrlFragment}/`, (req, res, next) => { + req.url = `/${assetUrlFragment}` + req.url; + vite.middlewares(req, res, next); + }); } else { const publicDir = path.join(resourceDir, "public"); if (!existsSync(publicDir)) { diff --git a/apps/server/src/services/asset_path.ts b/apps/server/src/services/asset_path.ts index 2695d1fc3..076b7a647 100644 --- a/apps/server/src/services/asset_path.ts +++ b/apps/server/src/services/asset_path.ts @@ -1,7 +1,6 @@ import packageJson from "../../package.json" with { type: "json" }; -import { isDev } from "./utils"; export const assetUrlFragment = `assets/v${packageJson.version}`; -const assetPath = isDev ? `http://localhost:4200/${assetUrlFragment}` : assetUrlFragment; +const assetPath = assetUrlFragment; export default assetPath; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28ecfa66d..b2cba94d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,7 +98,7 @@ importers: version: 0.17.0 rollup-plugin-webpack-stats: specifier: 2.1.4 - version: 2.1.4(rolldown@1.0.0-beta.29)(rollup@4.46.3)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.1.4(rolldown@1.0.0-beta.29)(rollup@4.46.3)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) tslib: specifier: ^2.3.0 version: 2.8.1 @@ -116,13 +116,13 @@ importers: version: 2.0.1 vite: specifier: ^7.0.0 - version: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) vite-plugin-dts: specifier: ~4.5.0 - version: 4.5.4(@types/node@22.18.0)(rollup@4.46.3)(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 4.5.4(@types/node@22.18.0)(rollup@4.46.3)(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) vitest: specifier: ^3.0.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) apps/client: dependencies: @@ -273,7 +273,7 @@ importers: version: 5.0.0 '@preact/preset-vite': specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.0)(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@types/bootstrap': specifier: 5.2.10 version: 5.2.10 @@ -303,7 +303,7 @@ importers: version: 0.7.2 vite-plugin-static-copy: specifier: 3.1.2 - version: 3.1.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 3.1.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) apps/db-compare: dependencies: @@ -464,6 +464,9 @@ importers: '@electron/remote': specifier: 2.1.3 version: 2.1.3(electron@37.4.0) + '@preact/preset-vite': + specifier: 2.10.2 + version: 2.10.2(@babel/core@7.28.0)(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@triliumnext/commons': specifier: workspace:* version: link:../../packages/commons @@ -575,6 +578,9 @@ importers: bindings: specifier: 1.5.0 version: 1.5.0 + bootstrap: + specifier: 5.3.8 + version: 5.3.8(@popperjs/core@2.11.8) chardet: specifier: 2.1.0 version: 2.1.0 @@ -749,6 +755,9 @@ importers: unescape: specifier: 1.0.1 version: 1.0.1 + vite: + specifier: ^7.1.3 + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) ws: specifier: 8.18.3 version: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -779,19 +788,19 @@ importers: version: 9.34.0 '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.1.0(@sveltejs/kit@2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))) + version: 6.1.0(@sveltejs/kit@2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))) '@sveltejs/kit': specifier: ^2.16.0 - version: 2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@sveltejs/vite-plugin-svelte': specifier: ^6.0.0 - version: 6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@tailwindcss/typography': specifier: ^0.5.15 version: 0.5.16(tailwindcss@4.1.12) '@tailwindcss/vite': specifier: ^4.0.0 - version: 4.1.12(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 4.1.12(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) eslint: specifier: ^9.18.0 version: 9.34.0(jiti@2.5.1) @@ -821,7 +830,7 @@ importers: version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) vite: specifier: ^7.0.0 - version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) packages/ckeditor5: dependencies: @@ -847,6 +856,9 @@ importers: specifier: 46.0.2 version: 46.0.2(bufferutil@4.0.9)(ckeditor5@46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41))(utf-8-validate@6.0.5) devDependencies: + '@smithy/middleware-retry': + specifier: 4.1.20 + version: 4.1.20 '@types/jquery': specifier: 3.5.33 version: 3.5.33 @@ -870,7 +882,7 @@ importers: version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -903,10 +915,10 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -930,7 +942,7 @@ importers: version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -963,10 +975,10 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -990,7 +1002,7 @@ importers: version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -1023,10 +1035,10 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1057,7 +1069,7 @@ importers: version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -1090,10 +1102,10 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1124,7 +1136,7 @@ importers: version: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -1157,10 +1169,10 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -4123,12 +4135,16 @@ packages: resolution: {integrity: sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==} engines: {node: '>=18.0.0'} + '@smithy/abort-controller@4.0.5': + resolution: {integrity: sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==} + engines: {node: '>=18.0.0'} + '@smithy/config-resolver@4.1.4': resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} engines: {node: '>=18.0.0'} - '@smithy/core@3.7.0': - resolution: {integrity: sha512-7ov8hu/4j0uPZv8b27oeOFtIBtlFmM3ibrPv/Omx1uUdoXvcpJ00U+H/OWWC/keAguLlcqwtyL2/jTlSnApgNQ==} + '@smithy/core@3.9.0': + resolution: {integrity: sha512-B/GknvCfS3llXd/b++hcrwIuqnEozQDnRL4sBmOac5/z/dr0/yG1PURNPOyU4Lsiy1IyTj8scPxVqRs5dYWf6A==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.0.6': @@ -4159,6 +4175,10 @@ packages: resolution: {integrity: sha512-mADw7MS0bYe2OGKkHYMaqarOXuDwRbO6ArD91XhHcl2ynjGCFF+hvqf0LyQcYxkA1zaWjefSkU7Ne9mqgApSgQ==} engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.1.1': + resolution: {integrity: sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==} + engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.0.4': resolution: {integrity: sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==} engines: {node: '>=18.0.0'} @@ -4179,71 +4199,90 @@ packages: resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.1.14': - resolution: {integrity: sha512-+BGLpK5D93gCcSEceaaYhUD/+OCGXM1IDaq/jKUQ+ujB0PTWlWN85noodKw/IPFZhIKFCNEe19PGd/reUMeLSQ==} + '@smithy/middleware-endpoint@4.1.19': + resolution: {integrity: sha512-EAlEPncqo03siNZJ9Tm6adKCQ+sw5fNU8ncxWwaH0zTCwMPsgmERTi6CEKaermZdgJb+4Yvh0NFm36HeO4PGgQ==} engines: {node: '>=18.0.0'} - deprecated: Please upgrade to @smithy/middleware-endpoint@4.1.15 or higher to fix a bug preventing the resolution of ENV and config file custom endpoints https://github.com/smithy-lang/smithy-typescript/issues/1645 - '@smithy/middleware-retry@4.1.15': - resolution: {integrity: sha512-iKYUJpiyTQ33U2KlOZeUb0GwtzWR3C0soYcKuCnTmJrvt6XwTPQZhMfsjJZNw7PpQ3TU4Ati1qLSrkSJxnnSMQ==} + '@smithy/middleware-retry@4.1.20': + resolution: {integrity: sha512-T3maNEm3Masae99eFdx1Q7PIqBBEVOvRd5hralqKZNeIivnoGNx5OFtI3DiZ5gCjUkl0mNondlzSXeVxkinh7Q==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.0.8': resolution: {integrity: sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.0.4': - resolution: {integrity: sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==} + '@smithy/middleware-serde@4.0.9': + resolution: {integrity: sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.1.3': - resolution: {integrity: sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==} + '@smithy/middleware-stack@4.0.5': + resolution: {integrity: sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.1.4': + resolution: {integrity: sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==} engines: {node: '>=18.0.0'} '@smithy/node-http-handler@4.1.0': resolution: {integrity: sha512-vqfSiHz2v8b3TTTrdXi03vNz1KLYYS3bhHCDv36FYDqxT7jvTll1mMnCrkD+gOvgwybuunh/2VmvOMqwBegxEg==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.0.4': - resolution: {integrity: sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==} + '@smithy/node-http-handler@4.1.1': + resolution: {integrity: sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==} engines: {node: '>=18.0.0'} - '@smithy/protocol-http@5.1.2': - resolution: {integrity: sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==} + '@smithy/property-provider@4.0.5': + resolution: {integrity: sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.1.3': + resolution: {integrity: sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==} engines: {node: '>=18.0.0'} '@smithy/querystring-builder@4.0.4': resolution: {integrity: sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==} engines: {node: '>=18.0.0'} + '@smithy/querystring-builder@4.0.5': + resolution: {integrity: sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-parser@4.0.4': resolution: {integrity: sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.0.6': - resolution: {integrity: sha512-RRoTDL//7xi4tn5FrN2NzH17jbgmnKidUqd4KvquT0954/i6CXXkh1884jBiunq24g9cGtPBEXlU40W6EpNOOg==} + '@smithy/querystring-parser@4.0.5': + resolution: {integrity: sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.0.4': - resolution: {integrity: sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==} + '@smithy/service-error-classification@4.0.7': + resolution: {integrity: sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.0.5': + resolution: {integrity: sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==} engines: {node: '>=18.0.0'} '@smithy/signature-v4@5.1.2': resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.4.6': - resolution: {integrity: sha512-3wfhywdzB/CFszP6moa5L3lf5/zSfQoH0kvVSdkyK2az5qZet0sn2PAHjcTDiq296Y4RP5yxF7B6S6+3oeBUCQ==} + '@smithy/smithy-client@4.5.0': + resolution: {integrity: sha512-ZSdE3vl0MuVbEwJBxSftm0J5nL/gw76xp5WF13zW9cN18MFuFXD5/LV0QD8P+sCU5bSWGyy6CTgUupE1HhOo1A==} engines: {node: '>=18.0.0'} - '@smithy/types@4.3.1': - resolution: {integrity: sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==} + '@smithy/types@4.3.2': + resolution: {integrity: sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==} engines: {node: '>=18.0.0'} '@smithy/url-parser@4.0.4': resolution: {integrity: sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==} engines: {node: '>=18.0.0'} + '@smithy/url-parser@4.0.5': + resolution: {integrity: sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==} + engines: {node: '>=18.0.0'} + '@smithy/util-base64@4.0.0': resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} engines: {node: '>=18.0.0'} @@ -4284,16 +4323,16 @@ packages: resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.0.4': - resolution: {integrity: sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==} + '@smithy/util-middleware@4.0.5': + resolution: {integrity: sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.0.6': - resolution: {integrity: sha512-+YekoF2CaSMv6zKrA6iI/N9yva3Gzn4L6n35Luydweu5MMPYpiGZlWqehPHDHyNbnyaYlz/WJyYAZnC+loBDZg==} + '@smithy/util-retry@4.0.7': + resolution: {integrity: sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.2.3': - resolution: {integrity: sha512-cQn412DWHHFNKrQfbHY8vSFI3nTROY1aIKji9N0tpp8gUABRilr7wdf8fqBbSlXresobM+tQFNk6I+0LXK/YZg==} + '@smithy/util-stream@4.2.4': + resolution: {integrity: sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==} engines: {node: '>=18.0.0'} '@smithy/util-uri-escape@4.0.0': @@ -11848,128 +11887,112 @@ packages: sanitize-html@2.17.0: resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} - sass-embedded-android-arm64@1.87.0: - resolution: {integrity: sha512-uqeZoBuXm3W2KhxolScAAfWOLHL21e50g7AxlLmG0he7WZsWw6e9kSnmq301iLIFp4kvmXYXbXbNKAeu9ItRYA==} + sass-embedded-all-unknown@1.91.0: + resolution: {integrity: sha512-AXC1oPqDfLnLtcoxM+XwSnbhcQs0TxAiA5JDEstl6+tt6fhFLKxdyl1Hla39SFtxvMfB2QDUYE3Dmx49O59vYg==} + cpu: ['!arm', '!arm64', '!riscv64', '!x64'] + + sass-embedded-android-arm64@1.91.0: + resolution: {integrity: sha512-I8Eeg2CeVcZIhXcQLNEY6ZBRF0m7jc818/fypwMwvIdbxGWBekTzc3aKHTLhdBpFzGnDIyR4s7oB0/OjIpzD1A==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [android] - sass-embedded-android-arm@1.87.0: - resolution: {integrity: sha512-Z20u/Y1kFDpMbgiloR5YPLxNuMVeKQRC8e/n68oAAxf3u7rDSmNn2msi7USqgT1f2zdBBNawn/ifbFEla6JiHw==} + sass-embedded-android-arm@1.91.0: + resolution: {integrity: sha512-DSh1V8TlLIcpklAbn4NINEFs3yD2OzVTbawEXK93IH990upoGNFVNRTstFQ/gcvlbWph3Y3FjAJvo37zUO485A==} engines: {node: '>=14.0.0'} cpu: [arm] os: [android] - sass-embedded-android-ia32@1.87.0: - resolution: {integrity: sha512-hSWTqo2Igdig528cUb1W1+emw9d1J4+nqOoR4tERS04zcwRRFNDiuBT0o5meV7nkEwE982F+h57YdcRXj8gTtg==} - engines: {node: '>=14.0.0'} - cpu: [ia32] - os: [android] - - sass-embedded-android-riscv64@1.87.0: - resolution: {integrity: sha512-kBAPSjiTBLy5ua/0LRNAJwOAARhzFU7gP35fYORJcdBuz1lkIVPVnid1lh9qQ6Ce9MOJcr7VKFtGnTuqVeig5A==} + sass-embedded-android-riscv64@1.91.0: + resolution: {integrity: sha512-qmsl1a7IIJL0fCOwzmRB+6nxeJK5m9/W8LReXUrdgyJNH5RyxChDg+wwQPVATFffOuztmWMnlJ5CV2sCLZrXcQ==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [android] - sass-embedded-android-x64@1.87.0: - resolution: {integrity: sha512-ZHMrNdtdMSpJUYco2MesnlPwDTZftD3pqkkOMI2pbqarPoFUKJtP5k80nwCM0sJGtqfNE+O16w9yPght0CMiJg==} + sass-embedded-android-x64@1.91.0: + resolution: {integrity: sha512-/wN0HBLATOVSeN3Tzg0yxxNTo1IQvOxxxwFv7Ki/1/UCg2AqZPxTpNoZj/mn8tUPtiVogMGbC8qclYMq1aRZsQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [android] - sass-embedded-darwin-arm64@1.87.0: - resolution: {integrity: sha512-7TK1JWJdCIRSdZv5CJv/HpDz/wIfwUy2FoPz9sVOEj1pDTH0N+VfJd5VutCddIdoQN9jr0ap8vwkc65FbAxV2A==} + sass-embedded-darwin-arm64@1.91.0: + resolution: {integrity: sha512-gQ6ScInxAN+BDUXy426BSYLRawkmGYlHpQ9i6iOxorr64dtIb3l6eb9YaBV8lPlroUnugylmwN2B3FU9BuPfhA==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] - sass-embedded-darwin-x64@1.87.0: - resolution: {integrity: sha512-2JiQzt7FmgUC4MYT2QvbeH/Bi3e76WEhaYoc5P3WyTW8unsHksyTdMuTuYe0Qf9usIyt6bmm5no/4BBw7c8Cig==} + sass-embedded-darwin-x64@1.91.0: + resolution: {integrity: sha512-DSvFMtECL2blYVTFMO5fLeNr5bX437Lrz8R47fdo5438TRyOkSgwKTkECkfh3YbnrL86yJIN2QQlmBMF17Z/iw==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] - sass-embedded-linux-arm64@1.87.0: - resolution: {integrity: sha512-5z+mwJCbGZcg+q+MwdEVSh0ogFK7OSAe175Gsozzr/Izw34Q+RGUw9O82jsV2c4YNuTAQvzEHgIO5cvNvt3Quw==} + sass-embedded-linux-arm64@1.91.0: + resolution: {integrity: sha512-OnKCabD7f420ZEC/6YI9WhCVGMZF+ybZ5NbAB9SsG1xlxrKbWQ1s7CIl0w/6RDALtJ+Fjn8+mrxsxqakoAkeuA==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] - sass-embedded-linux-arm@1.87.0: - resolution: {integrity: sha512-z5P6INMsGXiUcq1sRRbksyQUhalFFYjTEexuxfSYdK3U2YQMADHubQh8pGzkWvFRPOpnh83RiGuwvpaARYHnsw==} + sass-embedded-linux-arm@1.91.0: + resolution: {integrity: sha512-ppAZLp3eZ9oTjYdQDf4nM7EehDpkxq5H1hE8FOrx8LpY7pxn6QF+SRpAbRjdfFChRw0K7vh+IiCnQEMp7uLNAg==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] - sass-embedded-linux-ia32@1.87.0: - resolution: {integrity: sha512-Xzcp+YPp0iakGL148Jl57CO+MxLuj2jsry3M+rc1cSnDlvkjNVs6TMxaL70GFeV5HdU2V60voYcgE7adDUtJjw==} - engines: {node: '>=14.0.0'} - cpu: [ia32] - os: [linux] - - sass-embedded-linux-musl-arm64@1.87.0: - resolution: {integrity: sha512-HWE5eTRCoKzFZWsxOjDMTF5m4DDTQ0n7NJxSYiUXPBDydr9viPXbGOMYG7WVJLjiF7upr7DYo/mfp/SNTMlZyg==} + sass-embedded-linux-musl-arm64@1.91.0: + resolution: {integrity: sha512-VfbPpID1C5TT7rukob6CKgefx/TsLE+XZieMNd00hvfJ8XhqPr5DGvSMCNpXlwaedzTirbJu357m+n2PJI9TFQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] - sass-embedded-linux-musl-arm@1.87.0: - resolution: {integrity: sha512-4PyqOWhRzyu06RRmpCCBOJdF4BOv7s446wrV6yODtEyyfSIDx3MJabo3KT0oJ1lTWSI/aU3R89bKx0JFXcIHHw==} + sass-embedded-linux-musl-arm@1.91.0: + resolution: {integrity: sha512-znEsNC2FurPF9+XwQQ6e/fVoic3e5D3/kMB41t/bE8byJVRdaPhkdsszt3pZUE56nNGYoCuieSXUkk7VvyPHsw==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] - sass-embedded-linux-musl-ia32@1.87.0: - resolution: {integrity: sha512-aQaPvlRn3kh93PLQvl6BcFKu8Ji92+42blFEkg6nMVvmugD5ZwH2TGFrX25ibx4CYxRpMS4ssF7a0i7vy5HB1Q==} - engines: {node: '>=14.0.0'} - cpu: [ia32] - os: [linux] - - sass-embedded-linux-musl-riscv64@1.87.0: - resolution: {integrity: sha512-o5DxcqiFzET3KRWo+futHr/lhAMBP3tJGGx8YIgpHQYfvDMbsvE0hiFC+nZ/GF9dbcGd+ceIQwfvE5mcc7Gsjw==} + sass-embedded-linux-musl-riscv64@1.91.0: + resolution: {integrity: sha512-ZfLGldKEEeZjuljKks835LTq7jDRI3gXsKKXXgZGzN6Yymd4UpBOGWiDQlWsWTvw5UwDU2xfFh0wSXbLGHTjVA==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] - sass-embedded-linux-musl-x64@1.87.0: - resolution: {integrity: sha512-dKxWsu9Wu/CyfzQmHdeiGqrRSzJ85VUjbSx+aP1/7ttmps3SSg+YW95PuqnCOa7GSuSreC3dKKpXHTywUxMLQA==} + sass-embedded-linux-musl-x64@1.91.0: + resolution: {integrity: sha512-4kSiSGPKFMbLvTRbP/ibyiKheOA3fwsJKWU0SOuekSPmybMdrhNkTm0REp6+nehZRE60kC3lXmEV4a7w8Jrwyg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] - sass-embedded-linux-riscv64@1.87.0: - resolution: {integrity: sha512-Sy3ESZ4FwBiijvmTA9n+0p0w3MNCue1AgINVPzpAY27EFi0h49eqQm9SWfOkFqmkFS2zFRYowdQOr5Bbr2gOXA==} + sass-embedded-linux-riscv64@1.91.0: + resolution: {integrity: sha512-Y3Fj94SYYvMX9yo49T78yBgBWXtG3EyYUT5K05XyCYkcdl1mVXJSrEmqmRfe4vQGUCaSe/6s7MmsA9Q+mQez7Q==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] - sass-embedded-linux-x64@1.87.0: - resolution: {integrity: sha512-+UfjakOcHHKTnEqB3EZ+KqzezQOe1emvy4Rs+eQhLyfekpYuNze/qlRvYxfKTmrtvDiUrIto8MXsyZfMLzkuMA==} + sass-embedded-linux-x64@1.91.0: + resolution: {integrity: sha512-XwIUaE7pQP/ezS5te80hlyheYiUlo0FolQ0HBtxohpavM+DVX2fjwFm5LOUJHrLAqP+TLBtChfFeLj1Ie4Aenw==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] - sass-embedded-win32-arm64@1.87.0: - resolution: {integrity: sha512-m1DS6FYUE0/fv+vt38uQB/kxR4UjnyD+2zcSc298pFmA0aYh/XZIPWw7RxG1HL3KLE1ZrGyu3254MPoxRhs3ig==} + sass-embedded-unknown-all@1.91.0: + resolution: {integrity: sha512-Bj6v7ScQp/HtO91QBy6ood9AArSIN7/RNcT4E7P9QoY3o+e6621Vd28lV81vdepPrt6u6PgJoVKmLNODqB6Q+A==} + os: ['!android', '!darwin', '!linux', '!win32'] + + sass-embedded-win32-arm64@1.91.0: + resolution: {integrity: sha512-yDCwTiPRex03i1yo7LwiAl1YQ21UyfOxPobD7UjI8AE8ZcB0mQ28VVX66lsZ+qm91jfLslNFOFCD4v79xCG9hA==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] - sass-embedded-win32-ia32@1.87.0: - resolution: {integrity: sha512-JztXLo59GMe2E6g+kCsyiERYhtZgkcyDYx6CrXoSTE5WaE+RbxRiCCCv8/1+hf406f08pUxJ8G0Ody7M5urtBA==} - engines: {node: '>=14.0.0'} - cpu: [ia32] - os: [win32] - - sass-embedded-win32-x64@1.87.0: - resolution: {integrity: sha512-4nQErpauvhgSo+7ClumGdjdf9sGx+U9yBgvhI0+zUw+D5YvraVgvA0Lk8Wuwntx2PqnvKUk8YDr/vxHJostv4Q==} + sass-embedded-win32-x64@1.91.0: + resolution: {integrity: sha512-wiuMz/cx4vsk6rYCnNyoGE5pd73aDJ/zF3qJDose3ZLT1/vV943doJE5pICnS/v5DrUqzV6a1CNq4fN+xeSgFQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] - sass-embedded@1.87.0: - resolution: {integrity: sha512-1IA3iTJNh4BkkA/nidKiVwbmkxr9o6LsPegycHMX/JYs255zpocN5GdLF1+onohQCJxbs5ldr8osKV7qNaNBjg==} + sass-embedded@1.91.0: + resolution: {integrity: sha512-VTckYcH1AglrZ3VpPETilTo3Ef472XKwP13lrNfbOHSR6Eo5p27XTkIi+6lrCbuhBFFGAmy+4BRoLaeFUgn+eg==} engines: {node: '>=16.0.0'} hasBin: true @@ -11978,8 +12001,8 @@ packages: engines: {node: '>=12.0.0'} hasBin: true - sass@1.87.0: - resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==} + sass@1.91.0: + resolution: {integrity: sha512-aFOZHGf+ur+bp1bCHZ+u8otKGh77ZtmFyXDo4tlYvT7PWql41Kwd8wdkPqhhT+h2879IVblcHFglIMofsFd1EA==} engines: {node: '>=14.0.0'} hasBin: true @@ -13349,46 +13372,6 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x - vite@7.0.0: - resolution: {integrity: sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.1.3: resolution: {integrity: sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -14034,7 +14017,7 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.0 + '@smithy/core': 3.9.0 '@smithy/eventstream-serde-browser': 4.0.4 '@smithy/eventstream-serde-config-resolver': 4.1.2 '@smithy/eventstream-serde-node': 4.0.4 @@ -14042,15 +14025,15 @@ snapshots: '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.14 - '@smithy/middleware-retry': 4.1.15 + '@smithy/middleware-endpoint': 4.1.19 + '@smithy/middleware-retry': 4.1.20 '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 '@smithy/node-http-handler': 4.1.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.6 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 '@smithy/url-parser': 4.0.4 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -14058,9 +14041,9 @@ snapshots: '@smithy/util-defaults-mode-browser': 4.0.22 '@smithy/util-defaults-mode-node': 4.0.22 '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.6 - '@smithy/util-stream': 4.2.3 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-stream': 4.2.4 '@smithy/util-utf8': 4.0.0 '@types/uuid': 9.0.8 tslib: 2.8.1 @@ -14083,29 +14066,29 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.0 - '@smithy/fetch-http-handler': 5.1.0 + '@smithy/core': 3.9.0 + '@smithy/fetch-http-handler': 5.1.1 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.14 - '@smithy/middleware-retry': 4.1.15 - '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 - '@smithy/node-http-handler': 4.1.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.6 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 + '@smithy/middleware-endpoint': 4.1.19 + '@smithy/middleware-retry': 4.1.20 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 '@smithy/util-defaults-mode-browser': 4.0.22 '@smithy/util-defaults-mode-node': 4.0.22 '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.6 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: @@ -14115,16 +14098,16 @@ snapshots: dependencies: '@aws-sdk/types': 3.821.0 '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.7.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/protocol-http': 5.1.2 + '@smithy/core': 3.9.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/protocol-http': 5.1.3 '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.4.6 - '@smithy/types': 4.3.1 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.4 + '@smithy/util-middleware': 4.0.5 '@smithy/util-utf8': 4.0.0 fast-xml-parser: 4.4.1 tslib: 2.8.1 @@ -14133,21 +14116,21 @@ snapshots: dependencies: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/credential-provider-http@3.823.0': dependencies: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 - '@smithy/fetch-http-handler': 5.1.0 - '@smithy/node-http-handler': 4.1.0 - '@smithy/property-provider': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.6 - '@smithy/types': 4.3.1 - '@smithy/util-stream': 4.2.3 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/node-http-handler': 4.1.1 + '@smithy/property-provider': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 + '@smithy/util-stream': 4.2.4 tslib: 2.8.1 '@aws-sdk/credential-provider-ini@3.823.0': @@ -14161,9 +14144,9 @@ snapshots: '@aws-sdk/nested-clients': 3.823.0 '@aws-sdk/types': 3.821.0 '@smithy/credential-provider-imds': 4.0.6 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -14178,9 +14161,9 @@ snapshots: '@aws-sdk/credential-provider-web-identity': 3.823.0 '@aws-sdk/types': 3.821.0 '@smithy/credential-provider-imds': 4.0.6 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -14189,9 +14172,9 @@ snapshots: dependencies: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/credential-provider-sso@3.823.0': @@ -14200,9 +14183,9 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/token-providers': 3.823.0 '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -14212,8 +14195,8 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/nested-clients': 3.823.0 '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -14222,34 +14205,34 @@ snapshots: dependencies: '@aws-sdk/types': 3.821.0 '@smithy/eventstream-codec': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/middleware-eventstream@3.821.0': dependencies: '@aws-sdk/types': 3.821.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/middleware-host-header@3.821.0': dependencies: '@aws-sdk/types': 3.821.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/middleware-logger@3.821.0': dependencies: '@aws-sdk/types': 3.821.0 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/middleware-recursion-detection@3.821.0': dependencies: '@aws-sdk/types': 3.821.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/middleware-user-agent@3.823.0': @@ -14257,9 +14240,9 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 '@aws-sdk/util-endpoints': 3.821.0 - '@smithy/core': 3.7.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/core': 3.9.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/nested-clients@3.823.0': @@ -14277,29 +14260,29 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.0 - '@smithy/fetch-http-handler': 5.1.0 + '@smithy/core': 3.9.0 + '@smithy/fetch-http-handler': 5.1.1 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.14 - '@smithy/middleware-retry': 4.1.15 - '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 - '@smithy/node-http-handler': 4.1.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.6 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 + '@smithy/middleware-endpoint': 4.1.19 + '@smithy/middleware-retry': 4.1.20 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 '@smithy/util-defaults-mode-browser': 4.0.22 '@smithy/util-defaults-mode-node': 4.0.22 '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.6 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: @@ -14308,10 +14291,10 @@ snapshots: '@aws-sdk/region-config-resolver@3.821.0': dependencies: '@aws-sdk/types': 3.821.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.4 + '@smithy/util-middleware': 4.0.5 tslib: 2.8.1 '@aws-sdk/token-providers@3.823.0': @@ -14319,22 +14302,22 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/nested-clients': 3.823.0 '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt '@aws-sdk/types@3.821.0': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/util-endpoints@3.821.0': dependencies: '@aws-sdk/types': 3.821.0 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 '@smithy/util-endpoints': 3.0.6 tslib: 2.8.1 @@ -14345,7 +14328,7 @@ snapshots: '@aws-sdk/util-user-agent-browser@3.821.0': dependencies: '@aws-sdk/types': 3.821.0 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 bowser: 2.11.0 tslib: 2.8.1 @@ -14353,13 +14336,13 @@ snapshots: dependencies: '@aws-sdk/middleware-user-agent': 3.823.0 '@aws-sdk/types': 3.821.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@aws-sdk/xml-builder@3.821.0': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@babel/code-frame@7.26.2': @@ -14721,6 +14704,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-cloud-services@46.0.2': dependencies: @@ -17490,18 +17475,18 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) - '@prefresh/vite': 2.4.8(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@prefresh/vite': 2.4.8(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.0) debug: 4.4.1(supports-color@6.0.0) picocolors: 1.1.1 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vite-prerender-plugin: 0.5.11(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite-prerender-plugin: 0.5.11(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) transitivePeerDependencies: - preact - supports-color @@ -17514,7 +17499,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.8(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@prefresh/vite@2.4.8(preact@10.27.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@prefresh/babel-plugin': 0.5.2 @@ -17522,7 +17507,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.27.1 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -18191,85 +18176,100 @@ snapshots: '@smithy/abort-controller@4.0.4': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/abort-controller@4.0.5': + dependencies: + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/config-resolver@4.1.4': dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.4 + '@smithy/util-middleware': 4.0.5 tslib: 2.8.1 - '@smithy/core@3.7.0': + '@smithy/core@3.9.0': dependencies: - '@smithy/middleware-serde': 4.0.8 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/middleware-serde': 4.0.9 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-stream': 4.2.3 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 '@smithy/util-utf8': 4.0.0 + '@types/uuid': 9.0.8 tslib: 2.8.1 + uuid: 9.0.1 '@smithy/credential-provider-imds@4.0.6': dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 tslib: 2.8.1 '@smithy/eventstream-codec@4.0.4': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 '@smithy/eventstream-serde-browser@4.0.4': dependencies: '@smithy/eventstream-serde-universal': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/eventstream-serde-config-resolver@4.1.2': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/eventstream-serde-node@4.0.4': dependencies: '@smithy/eventstream-serde-universal': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/eventstream-serde-universal@4.0.4': dependencies: '@smithy/eventstream-codec': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/fetch-http-handler@5.1.0': dependencies: - '@smithy/protocol-http': 5.1.2 + '@smithy/protocol-http': 5.1.3 '@smithy/querystring-builder': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.1.1': + dependencies: + '@smithy/protocol-http': 5.1.3 + '@smithy/querystring-builder': 4.0.5 + '@smithy/types': 4.3.2 '@smithy/util-base64': 4.0.0 tslib: 2.8.1 '@smithy/hash-node@4.0.4': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 '@smithy/invalid-dependency@4.0.4': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': @@ -18282,118 +18282,150 @@ snapshots: '@smithy/middleware-content-length@4.0.4': dependencies: - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.1.14': + '@smithy/middleware-endpoint@4.1.19': dependencies: - '@smithy/core': 3.7.0 - '@smithy/middleware-serde': 4.0.8 - '@smithy/node-config-provider': 4.1.3 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@smithy/util-middleware': 4.0.4 + '@smithy/core': 3.9.0 + '@smithy/middleware-serde': 4.0.9 + '@smithy/node-config-provider': 4.1.4 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-middleware': 4.0.5 tslib: 2.8.1 - '@smithy/middleware-retry@4.1.15': + '@smithy/middleware-retry@4.1.20': dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/protocol-http': 5.1.2 - '@smithy/service-error-classification': 4.0.6 - '@smithy/smithy-client': 4.4.6 - '@smithy/types': 4.3.1 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.6 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/service-error-classification': 4.0.7 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 '@smithy/middleware-serde@4.0.8': dependencies: - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - '@smithy/middleware-stack@4.0.4': + '@smithy/middleware-serde@4.0.9': dependencies: - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 tslib: 2.8.1 - '@smithy/node-config-provider@4.1.3': + '@smithy/middleware-stack@4.0.5': dependencies: - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.1.4': + dependencies: + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/node-http-handler@4.1.0': dependencies: '@smithy/abort-controller': 4.0.4 - '@smithy/protocol-http': 5.1.2 + '@smithy/protocol-http': 5.1.3 '@smithy/querystring-builder': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 - '@smithy/property-provider@4.0.4': + '@smithy/node-http-handler@4.1.1': dependencies: - '@smithy/types': 4.3.1 + '@smithy/abort-controller': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/querystring-builder': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 - '@smithy/protocol-http@5.1.2': + '@smithy/property-provider@4.0.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/protocol-http@5.1.3': + dependencies: + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/querystring-builder@4.0.4': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 + '@smithy/util-uri-escape': 4.0.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.0.5': + dependencies: + '@smithy/types': 4.3.2 '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 '@smithy/querystring-parser@4.0.4': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 - '@smithy/service-error-classification@4.0.6': + '@smithy/querystring-parser@4.0.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 + tslib: 2.8.1 - '@smithy/shared-ini-file-loader@4.0.4': + '@smithy/service-error-classification@4.0.7': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 + + '@smithy/shared-ini-file-loader@4.0.5': + dependencies: + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/signature-v4@5.1.2': dependencies: '@smithy/is-array-buffer': 4.0.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-middleware': 4.0.4 + '@smithy/util-middleware': 4.0.5 '@smithy/util-uri-escape': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@4.4.6': + '@smithy/smithy-client@4.5.0': dependencies: - '@smithy/core': 3.7.0 - '@smithy/middleware-endpoint': 4.1.14 - '@smithy/middleware-stack': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-stream': 4.2.3 + '@smithy/core': 3.9.0 + '@smithy/middleware-endpoint': 4.1.19 + '@smithy/middleware-stack': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-stream': 4.2.4 tslib: 2.8.1 - '@smithy/types@4.3.1': + '@smithy/types@4.3.2': dependencies: tslib: 2.8.1 '@smithy/url-parser@4.0.4': dependencies: '@smithy/querystring-parser': 4.0.4 - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/url-parser@4.0.5': + dependencies: + '@smithy/querystring-parser': 4.0.5 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/util-base64@4.0.0': @@ -18426,9 +18458,9 @@ snapshots: '@smithy/util-defaults-mode-browser@4.0.22': dependencies: - '@smithy/property-provider': 4.0.4 - '@smithy/smithy-client': 4.4.6 - '@smithy/types': 4.3.1 + '@smithy/property-provider': 4.0.5 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 bowser: 2.11.0 tslib: 2.8.1 @@ -18436,38 +18468,38 @@ snapshots: dependencies: '@smithy/config-resolver': 4.1.4 '@smithy/credential-provider-imds': 4.0.6 - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/smithy-client': 4.4.6 - '@smithy/types': 4.3.1 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/util-endpoints@3.0.6': dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 tslib: 2.8.1 '@smithy/util-hex-encoding@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-middleware@4.0.4': + '@smithy/util-middleware@4.0.5': dependencies: - '@smithy/types': 4.3.1 + '@smithy/types': 4.3.2 tslib: 2.8.1 - '@smithy/util-retry@4.0.6': + '@smithy/util-retry@4.0.7': dependencies: - '@smithy/service-error-classification': 4.0.6 - '@smithy/types': 4.3.1 + '@smithy/service-error-classification': 4.0.7 + '@smithy/types': 4.3.2 tslib: 2.8.1 - '@smithy/util-stream@4.2.3': + '@smithy/util-stream@4.2.4': dependencies: - '@smithy/fetch-http-handler': 5.1.0 - '@smithy/node-http-handler': 4.1.0 - '@smithy/types': 4.3.1 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/node-http-handler': 4.1.1 + '@smithy/types': 4.3.2 '@smithy/util-base64': 4.0.0 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-hex-encoding': 4.0.0 @@ -18530,15 +18562,15 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))': + '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))': dependencies: - '@sveltejs/kit': 2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@sveltejs/kit': 2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) - '@sveltejs/kit@2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@sveltejs/kit@2.36.3(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@standard-schema/spec': 1.0.0 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 1.0.2 @@ -18551,27 +18583,27 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.38.6 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) debug: 4.4.1(supports-color@6.0.0) svelte: 5.38.6 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.6)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) debug: 4.4.1(supports-color@6.0.0) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.38.6 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vitefu: 1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) transitivePeerDependencies: - supports-color @@ -18711,12 +18743,12 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.1.12 - '@tailwindcss/vite@4.1.12(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@tailwindcss/vite@4.1.12(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@tailwindcss/node': 4.1.12 '@tailwindcss/oxide': 4.1.12 tailwindcss: 4.1.12 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) '@testing-library/dom@10.4.0': dependencies: @@ -19524,16 +19556,16 @@ snapshots: - bufferutil - utf-8-validate - '@vitest/browser@3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@vitest/browser@3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/utils': 3.2.4 magic-string: 0.30.17 sirv: 3.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: playwright: 1.55.0 @@ -19556,7 +19588,7 @@ snapshots: magicast: 0.3.5 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -19575,9 +19607,9 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) optionalDependencies: - '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) transitivePeerDependencies: - supports-color @@ -19589,23 +19621,14 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(vite@7.0.0(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: msw: 2.7.5(@types/node@22.18.0)(typescript@5.9.2) - vite: 7.0.0(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - - '@vitest/mocker@3.2.4(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))': - dependencies: - '@vitest/spy': 3.2.4 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - msw: 2.7.5(@types/node@22.18.0)(typescript@5.9.2) - vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -19636,7 +19659,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.14 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) '@vitest/utils@3.2.4': dependencies: @@ -22660,10 +22683,6 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.6(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.4.6(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -27379,11 +27398,11 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.29 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.29 - rollup-plugin-stats@1.5.0(rolldown@1.0.0-beta.29)(rollup@4.46.3)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): + rollup-plugin-stats@1.5.0(rolldown@1.0.0-beta.29)(rollup@4.46.3)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): optionalDependencies: rolldown: 1.0.0-beta.29 rollup: 4.46.3 - vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) rollup-plugin-styles@4.0.0(rollup@4.40.0): dependencies: @@ -27412,13 +27431,13 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.40.0) rollup: 4.40.0 - rollup-plugin-webpack-stats@2.1.4(rolldown@1.0.0-beta.29)(rollup@4.46.3)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): + rollup-plugin-webpack-stats@2.1.4(rolldown@1.0.0-beta.29)(rollup@4.46.3)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): dependencies: rolldown: 1.0.0-beta.29 - rollup-plugin-stats: 1.5.0(rolldown@1.0.0-beta.29)(rollup@4.46.3)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + rollup-plugin-stats: 1.5.0(rolldown@1.0.0-beta.29)(rollup@4.46.3)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) optionalDependencies: rollup: 4.46.3 - vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) rollup@4.40.0: dependencies: @@ -27556,67 +27575,65 @@ snapshots: parse-srcset: 1.0.2 postcss: 8.5.3 - sass-embedded-android-arm64@1.87.0: + sass-embedded-all-unknown@1.91.0: + dependencies: + sass: 1.91.0 optional: true - sass-embedded-android-arm@1.87.0: + sass-embedded-android-arm64@1.91.0: optional: true - sass-embedded-android-ia32@1.87.0: + sass-embedded-android-arm@1.91.0: optional: true - sass-embedded-android-riscv64@1.87.0: + sass-embedded-android-riscv64@1.91.0: optional: true - sass-embedded-android-x64@1.87.0: + sass-embedded-android-x64@1.91.0: optional: true - sass-embedded-darwin-arm64@1.87.0: + sass-embedded-darwin-arm64@1.91.0: optional: true - sass-embedded-darwin-x64@1.87.0: + sass-embedded-darwin-x64@1.91.0: optional: true - sass-embedded-linux-arm64@1.87.0: + sass-embedded-linux-arm64@1.91.0: optional: true - sass-embedded-linux-arm@1.87.0: + sass-embedded-linux-arm@1.91.0: optional: true - sass-embedded-linux-ia32@1.87.0: + sass-embedded-linux-musl-arm64@1.91.0: optional: true - sass-embedded-linux-musl-arm64@1.87.0: + sass-embedded-linux-musl-arm@1.91.0: optional: true - sass-embedded-linux-musl-arm@1.87.0: + sass-embedded-linux-musl-riscv64@1.91.0: optional: true - sass-embedded-linux-musl-ia32@1.87.0: + sass-embedded-linux-musl-x64@1.91.0: optional: true - sass-embedded-linux-musl-riscv64@1.87.0: + sass-embedded-linux-riscv64@1.91.0: optional: true - sass-embedded-linux-musl-x64@1.87.0: + sass-embedded-linux-x64@1.91.0: optional: true - sass-embedded-linux-riscv64@1.87.0: + sass-embedded-unknown-all@1.91.0: + dependencies: + sass: 1.91.0 optional: true - sass-embedded-linux-x64@1.87.0: + sass-embedded-win32-arm64@1.91.0: optional: true - sass-embedded-win32-arm64@1.87.0: + sass-embedded-win32-x64@1.91.0: optional: true - sass-embedded-win32-ia32@1.87.0: - optional: true - - sass-embedded-win32-x64@1.87.0: - optional: true - - sass-embedded@1.87.0: + sass-embedded@1.91.0: dependencies: '@bufbuild/protobuf': 2.7.0 buffer-builder: 0.2.0 @@ -27627,26 +27644,24 @@ snapshots: sync-child-process: 1.0.2 varint: 6.0.0 optionalDependencies: - sass-embedded-android-arm: 1.87.0 - sass-embedded-android-arm64: 1.87.0 - sass-embedded-android-ia32: 1.87.0 - sass-embedded-android-riscv64: 1.87.0 - sass-embedded-android-x64: 1.87.0 - sass-embedded-darwin-arm64: 1.87.0 - sass-embedded-darwin-x64: 1.87.0 - sass-embedded-linux-arm: 1.87.0 - sass-embedded-linux-arm64: 1.87.0 - sass-embedded-linux-ia32: 1.87.0 - sass-embedded-linux-musl-arm: 1.87.0 - sass-embedded-linux-musl-arm64: 1.87.0 - sass-embedded-linux-musl-ia32: 1.87.0 - sass-embedded-linux-musl-riscv64: 1.87.0 - sass-embedded-linux-musl-x64: 1.87.0 - sass-embedded-linux-riscv64: 1.87.0 - sass-embedded-linux-x64: 1.87.0 - sass-embedded-win32-arm64: 1.87.0 - sass-embedded-win32-ia32: 1.87.0 - sass-embedded-win32-x64: 1.87.0 + sass-embedded-all-unknown: 1.91.0 + sass-embedded-android-arm: 1.91.0 + sass-embedded-android-arm64: 1.91.0 + sass-embedded-android-riscv64: 1.91.0 + sass-embedded-android-x64: 1.91.0 + sass-embedded-darwin-arm64: 1.91.0 + sass-embedded-darwin-x64: 1.91.0 + sass-embedded-linux-arm: 1.91.0 + sass-embedded-linux-arm64: 1.91.0 + sass-embedded-linux-musl-arm: 1.91.0 + sass-embedded-linux-musl-arm64: 1.91.0 + sass-embedded-linux-musl-riscv64: 1.91.0 + sass-embedded-linux-musl-x64: 1.91.0 + sass-embedded-linux-riscv64: 1.91.0 + sass-embedded-linux-x64: 1.91.0 + sass-embedded-unknown-all: 1.91.0 + sass-embedded-win32-arm64: 1.91.0 + sass-embedded-win32-x64: 1.91.0 optional: true sass@1.51.0: @@ -27655,7 +27670,7 @@ snapshots: immutable: 4.3.7 source-map-js: 1.2.1 - sass@1.87.0: + sass@1.91.0: dependencies: chokidar: 4.0.3 immutable: 5.1.3 @@ -28796,7 +28811,7 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 tinypool@1.1.1: {} @@ -29343,13 +29358,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.1(supports-color@6.0.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.0(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -29364,7 +29379,7 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.5.4(@types/node@22.18.0)(rollup@4.46.3)(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@22.18.0)(rollup@4.46.3)(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.52.8(@types/node@22.18.0) '@rollup/pluginutils': 5.1.4(rollup@4.46.3) @@ -29377,58 +29392,38 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.2 optionalDependencies: - vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-static-copy@3.1.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): + vite-plugin-static-copy@3.1.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): dependencies: chokidar: 3.6.0 fs-extra: 11.3.1 p-map: 7.0.3 picocolors: 1.1.1 tinyglobby: 0.2.14 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vite-plugin-svgo@2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): + vite-plugin-svgo@2.0.0(typescript@5.9.2)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): dependencies: svgo: 3.3.2 typescript: 5.9.2 - vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vite-prerender-plugin@0.5.11(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): + vite-prerender-plugin@0.5.11(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): dependencies: kolorist: 1.8.0 - magic-string: 0.30.17 + magic-string: 0.30.18 node-html-parser: 6.1.13 simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vite@7.0.0(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): - dependencies: - esbuild: 0.25.9 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.6 - rollup: 4.40.0 - tinyglobby: 0.2.14 - optionalDependencies: - '@types/node': 22.18.0 - fsevents: 2.3.3 - jiti: 2.5.1 - less: 4.1.3 - lightningcss: 1.30.1 - sass: 1.87.0 - sass-embedded: 1.87.0 - terser: 5.43.1 - tsx: 4.20.5 - yaml: 2.8.1 - - vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -29442,13 +29437,13 @@ snapshots: jiti: 2.5.1 less: 4.1.3 lightningcss: 1.30.1 - sass: 1.87.0 - sass-embedded: 1.87.0 + sass: 1.91.0 + sass-embedded: 1.91.0 terser: 5.43.1 tsx: 4.20.5 yaml: 2.8.1 - vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -29462,21 +29457,21 @@ snapshots: jiti: 2.5.1 less: 4.1.3 lightningcss: 1.30.1 - sass: 1.87.0 - sass-embedded: 1.87.0 + sass: 1.91.0 + sass-embedded: 1.91.0 terser: 5.43.1 tsx: 4.20.5 yaml: 2.8.1 - vitefu@1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): + vitefu@1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)): optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.5.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(vite@7.0.0(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -29494,13 +29489,13 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.0(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 22.18.0 - '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.87.0)(sass@1.87.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.0)(typescript@5.9.2))(playwright@1.55.0)(utf-8-validate@6.0.5)(vite@7.1.3(@types/node@22.18.0)(jiti@2.5.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 3.2.4(vitest@3.2.4) happy-dom: 18.0.1 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) From 1dcb3b15292de36a7cb4832dbee27a0c04949141 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 18:28:20 +0300 Subject: [PATCH 07/85] chore(dx/server): set up cache for Vite --- .gitignore | 3 +++ apps/server/src/routes/assets.ts | 1 + 2 files changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 09749c270..877dd4cb2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ # See https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files for more about ignoring files. +/.cache +!/.cache/vite/.gitkeep + # compiled output dist tmp diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index 5484e0158..99d5fac72 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -23,6 +23,7 @@ async function register(app: express.Application) { if (isDev) { const vite = await createViteServer({ + cacheDir: path.join(srcRoot, "../../.cache/vite"), base: `/${assetUrlFragment}/`, root: path.join(srcRoot, "../client"), plugins: [ From e49c4655a6380a501e9d25e244bef7563c70d293 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 18:51:18 +0300 Subject: [PATCH 08/85] chore(dx/client): ckeditor5 CSS imports --- packages/ckeditor5/src/plugins.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/ckeditor5/src/plugins.ts b/packages/ckeditor5/src/plugins.ts index a16ad1bbb..bbd613a9e 100644 --- a/packages/ckeditor5/src/plugins.ts +++ b/packages/ckeditor5/src/plugins.ts @@ -21,10 +21,10 @@ import { Admonition } from "@triliumnext/ckeditor5-admonition"; import { Footnotes } from "@triliumnext/ckeditor5-footnotes"; import { Math, AutoformatMath } from "@triliumnext/ckeditor5-math"; -import "@triliumnext/ckeditor5-mermaid/index.css"; -import "@triliumnext/ckeditor5-admonition/index.css"; -import "@triliumnext/ckeditor5-footnotes/index.css"; -import "@triliumnext/ckeditor5-math/index.css"; +// import "@triliumnext/ckeditor5-mermaid/index.css"; +// import "@triliumnext/ckeditor5-admonition/index.css"; +// import "@triliumnext/ckeditor5-footnotes/index.css"; +// import "@triliumnext/ckeditor5-math/index.css"; import CodeBlockToolbar from "./plugins/code_block_toolbar.js"; import CodeBlockLanguageDropdown from "./plugins/code_block_language_dropdown.js"; import MoveBlockUpDownPlugin from "./plugins/move_block_updown.js"; From f7a0dc00e89468cf3df7afe84a9d6b24470395d3 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 18:52:22 +0300 Subject: [PATCH 09/85] chore(dx/client): fix bootstrap CSS imports --- apps/client/src/desktop.ts | 2 +- apps/client/src/login.ts | 2 +- apps/client/src/mobile.ts | 2 +- apps/client/src/set_password.ts | 2 +- apps/client/src/setup.ts | 2 +- apps/client/src/stylesheets/bootstrap.scss | 2 -- 6 files changed, 5 insertions(+), 7 deletions(-) delete mode 100644 apps/client/src/stylesheets/bootstrap.scss diff --git a/apps/client/src/desktop.ts b/apps/client/src/desktop.ts index 57ff4084e..cf644cd3b 100644 --- a/apps/client/src/desktop.ts +++ b/apps/client/src/desktop.ts @@ -10,7 +10,7 @@ import { t } from "./services/i18n.js"; import options from "./services/options.js"; import type ElectronRemote from "@electron/remote"; import type Electron from "electron"; -import "./stylesheets/bootstrap.scss"; +import "bootstrap/dist/css/bootstrap.min.css"; import "boxicons/css/boxicons.min.css"; import "autocomplete.js/index_jquery.js"; diff --git a/apps/client/src/login.ts b/apps/client/src/login.ts index 2ba27be02..351ed4c1e 100644 --- a/apps/client/src/login.ts +++ b/apps/client/src/login.ts @@ -1,4 +1,4 @@ -import "./stylesheets/bootstrap.scss"; +import "bootstrap/dist/css/bootstrap.min.css"; // @ts-ignore - module = undefined // Required for correct loading of scripts in Electron diff --git a/apps/client/src/mobile.ts b/apps/client/src/mobile.ts index 805ffe276..507b9ff5a 100644 --- a/apps/client/src/mobile.ts +++ b/apps/client/src/mobile.ts @@ -1,7 +1,7 @@ import appContext from "./components/app_context.js"; import noteAutocompleteService from "./services/note_autocomplete.js"; import glob from "./services/glob.js"; -import "./stylesheets/bootstrap.scss"; +import "bootstrap/dist/css/bootstrap.min.css"; import "boxicons/css/boxicons.min.css"; import "autocomplete.js/index_jquery.js"; diff --git a/apps/client/src/set_password.ts b/apps/client/src/set_password.ts index 67dfee187..47e02f1d1 100644 --- a/apps/client/src/set_password.ts +++ b/apps/client/src/set_password.ts @@ -1,4 +1,4 @@ -import "./stylesheets/bootstrap.scss"; +import "bootstrap/dist/css/bootstrap.min.css"; import "./stylesheets/auth.css"; // @TriliumNextTODO: is this even needed anymore? diff --git a/apps/client/src/setup.ts b/apps/client/src/setup.ts index ba117aaf7..d5659645e 100644 --- a/apps/client/src/setup.ts +++ b/apps/client/src/setup.ts @@ -1,7 +1,7 @@ import "jquery"; import utils from "./services/utils.js"; import ko from "knockout"; -import "./stylesheets/bootstrap.scss"; +import "bootstrap/dist/css/bootstrap.min.css"; // TriliumNextTODO: properly make use of below types // type SetupModelSetupType = "new-document" | "sync-from-desktop" | "sync-from-server" | ""; diff --git a/apps/client/src/stylesheets/bootstrap.scss b/apps/client/src/stylesheets/bootstrap.scss deleted file mode 100644 index b30b929fe..000000000 --- a/apps/client/src/stylesheets/bootstrap.scss +++ /dev/null @@ -1,2 +0,0 @@ -/* Import all of Bootstrap's CSS */ -@use "bootstrap/scss/bootstrap"; From 83624249763417876936fc9126657f99dd61d778 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 18:52:52 +0300 Subject: [PATCH 10/85] chore(dx/client): fix highlightjs not working --- packages/highlightjs/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/highlightjs/src/index.ts b/packages/highlightjs/src/index.ts index 29ffec2a7..355268179 100644 --- a/packages/highlightjs/src/index.ts +++ b/packages/highlightjs/src/index.ts @@ -1,4 +1,4 @@ -import hljs from "../node_modules/highlight.js/es/core.js"; +import hljs from "highlight.js"; import { normalizeMimeTypeForCKEditor, type MimeType } from "@triliumnext/commons"; import syntaxDefinitions from "./syntax_highlighting.js"; import { type Theme } from "./themes.js"; From 054c4976784225c3e0bddc6d0d990e88c7c3e58a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 18:57:31 +0300 Subject: [PATCH 11/85] chore(dx/client): improve startup speed by properly configuring middleware --- apps/server/src/routes/assets.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index 99d5fac72..b076f6db2 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -23,6 +23,8 @@ async function register(app: express.Application) { if (isDev) { const vite = await createViteServer({ + server: { middlewareMode: true }, + appType: "custom", cacheDir: path.join(srcRoot, "../../.cache/vite"), base: `/${assetUrlFragment}/`, root: path.join(srcRoot, "../client"), From 46cb869237b958692f957f1dfc0bcb1795887e49 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 19:21:36 +0300 Subject: [PATCH 12/85] chore(dx/server): client paths not correct --- apps/server/src/services/app_path.ts | 3 ++- apps/server/src/services/asset_path.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/server/src/services/app_path.ts b/apps/server/src/services/app_path.ts index 06d42a2cc..7c25d542c 100644 --- a/apps/server/src/services/app_path.ts +++ b/apps/server/src/services/app_path.ts @@ -1,3 +1,4 @@ import assetPath from "./asset_path.js"; +import { isDev } from "./utils.js"; -export default assetPath + "/src"; +export default isDev ? assetPath : assetPath + "/src"; diff --git a/apps/server/src/services/asset_path.ts b/apps/server/src/services/asset_path.ts index 076b7a647..237a3f5a3 100644 --- a/apps/server/src/services/asset_path.ts +++ b/apps/server/src/services/asset_path.ts @@ -1,6 +1,7 @@ import packageJson from "../../package.json" with { type: "json" }; +import { isDev } from "./utils"; export const assetUrlFragment = `assets/v${packageJson.version}`; -const assetPath = assetUrlFragment; +const assetPath = isDev ? assetUrlFragment + "/src" : assetUrlFragment; export default assetPath; From 5f1d2f02ee460d8adfd9ecfb4c24c8e99ffffa05 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 19:26:47 +0300 Subject: [PATCH 13/85] chore(dx/client): fix SVG icons causing errors in CKEditor --- apps/client/src/widgets/type_widgets/editable_text.ts | 1 - packages/ckeditor5-admonition/src/admonitionui.ts | 2 +- packages/ckeditor5-admonition/src/index.ts | 2 +- packages/ckeditor5-admonition/typings/types.d.ts | 2 +- packages/ckeditor5-footnotes/src/footnote-ui.ts | 2 +- packages/ckeditor5-footnotes/src/index.ts | 2 +- packages/ckeditor5-footnotes/typings/types.d.ts | 2 +- packages/ckeditor5-keyboard-marker/src/index.ts | 2 +- packages/ckeditor5-keyboard-marker/src/kbdui.ts | 2 +- packages/ckeditor5-keyboard-marker/typings/types.d.ts | 2 +- packages/ckeditor5-math/src/index.ts | 2 +- packages/ckeditor5-math/src/mathui.ts | 6 +++--- packages/ckeditor5-math/typings/types.d.ts | 2 +- packages/ckeditor5-mermaid/src/index.ts | 10 +++++----- packages/ckeditor5-mermaid/src/mermaidui.ts | 10 +++++----- packages/ckeditor5-mermaid/tests/index.ts | 10 +++++----- packages/ckeditor5-mermaid/typings/types.d.ts | 2 +- .../src/plugins/file_upload/progressbarview.ts | 2 +- 18 files changed, 31 insertions(+), 32 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/editable_text.ts b/apps/client/src/widgets/type_widgets/editable_text.ts index e1163e2b5..696e7900e 100644 --- a/apps/client/src/widgets/type_widgets/editable_text.ts +++ b/apps/client/src/widgets/type_widgets/editable_text.ts @@ -12,7 +12,6 @@ import { buildSelectedBackgroundColor } from "../../components/touch_bar.js"; import { buildConfig, BuildEditorOptions, OPEN_SOURCE_LICENSE_KEY } from "./ckeditor/config.js"; import type FNote from "../../entities/fnote.js"; import { PopupEditor, ClassicEditor, EditorWatchdog, type CKTextEditor, type MentionFeed, type WatchdogConfig, EditorConfig } from "@triliumnext/ckeditor5"; -import "@triliumnext/ckeditor5/index.css"; import { updateTemplateCache } from "./ckeditor/snippets.js"; const TPL = /*html*/` diff --git a/packages/ckeditor5-admonition/src/admonitionui.ts b/packages/ckeditor5-admonition/src/admonitionui.ts index 09c78f880..ec765ecce 100644 --- a/packages/ckeditor5-admonition/src/admonitionui.ts +++ b/packages/ckeditor5-admonition/src/admonitionui.ts @@ -10,7 +10,7 @@ import { Plugin, addListToDropdown, createDropdown, ListDropdownItemDefinition, SplitButtonView, ViewModel } from 'ckeditor5'; import '../theme/blockquote.css'; -import admonitionIcon from '../theme/icons/admonition.svg'; +import admonitionIcon from '../theme/icons/admonition.svg?raw'; import { AdmonitionType } from './admonitioncommand.js'; import { Collection } from 'ckeditor5'; diff --git a/packages/ckeditor5-admonition/src/index.ts b/packages/ckeditor5-admonition/src/index.ts index 99edeece8..23716647d 100644 --- a/packages/ckeditor5-admonition/src/index.ts +++ b/packages/ckeditor5-admonition/src/index.ts @@ -1,4 +1,4 @@ -import admonitionIcon from '../theme/icons/admonition.svg'; +import admonitionIcon from '../theme/icons/admonition.svg?raw'; import './augmentation.js'; import "../theme/blockquote.css"; diff --git a/packages/ckeditor5-admonition/typings/types.d.ts b/packages/ckeditor5-admonition/typings/types.d.ts index 4333ece78..09be57e1c 100644 --- a/packages/ckeditor5-admonition/typings/types.d.ts +++ b/packages/ckeditor5-admonition/typings/types.d.ts @@ -1,4 +1,4 @@ -declare module '*.svg' { +declare module '*.svg?raw' { const content: string; export default content; } diff --git a/packages/ckeditor5-footnotes/src/footnote-ui.ts b/packages/ckeditor5-footnotes/src/footnote-ui.ts index c54b77187..719eb6901 100644 --- a/packages/ckeditor5-footnotes/src/footnote-ui.ts +++ b/packages/ckeditor5-footnotes/src/footnote-ui.ts @@ -6,7 +6,7 @@ import { ELEMENTS, TOOLBAR_COMPONENT_NAME } from './constants.js'; -import insertFootnoteIcon from '../theme/icons/insert-footnote.svg'; +import insertFootnoteIcon from '../theme/icons/insert-footnote.svg?raw'; import { modelQueryElement, modelQueryElementsAll } from './utils.js'; export default class FootnoteUI extends Plugin { diff --git a/packages/ckeditor5-footnotes/src/index.ts b/packages/ckeditor5-footnotes/src/index.ts index 66f96f2b6..b93f1d62c 100644 --- a/packages/ckeditor5-footnotes/src/index.ts +++ b/packages/ckeditor5-footnotes/src/index.ts @@ -1,4 +1,4 @@ -import insertFootnoteIcon from './../theme/icons/insert-footnote.svg'; +import insertFootnoteIcon from './../theme/icons/insert-footnote.svg?raw'; import './augmentation.js'; import "../theme/footnote.css"; diff --git a/packages/ckeditor5-footnotes/typings/types.d.ts b/packages/ckeditor5-footnotes/typings/types.d.ts index 4333ece78..09be57e1c 100644 --- a/packages/ckeditor5-footnotes/typings/types.d.ts +++ b/packages/ckeditor5-footnotes/typings/types.d.ts @@ -1,4 +1,4 @@ -declare module '*.svg' { +declare module '*.svg?raw' { const content: string; export default content; } diff --git a/packages/ckeditor5-keyboard-marker/src/index.ts b/packages/ckeditor5-keyboard-marker/src/index.ts index eecb33f8d..8b4dfd21f 100644 --- a/packages/ckeditor5-keyboard-marker/src/index.ts +++ b/packages/ckeditor5-keyboard-marker/src/index.ts @@ -1,4 +1,4 @@ -import kbdIcon from '../theme/icons/kbd.svg'; +import kbdIcon from '../theme/icons/kbd.svg?raw'; import './augmentation.js'; export { default as Kbd } from './kbd.js'; diff --git a/packages/ckeditor5-keyboard-marker/src/kbdui.ts b/packages/ckeditor5-keyboard-marker/src/kbdui.ts index 828157d66..0d12a7d28 100644 --- a/packages/ckeditor5-keyboard-marker/src/kbdui.ts +++ b/packages/ckeditor5-keyboard-marker/src/kbdui.ts @@ -1,5 +1,5 @@ import { AttributeCommand, ButtonView, Plugin } from 'ckeditor5'; -import kbdIcon from '../theme/icons/kbd.svg'; +import kbdIcon from '../theme/icons/kbd.svg?raw'; const KBD = 'kbd'; diff --git a/packages/ckeditor5-keyboard-marker/typings/types.d.ts b/packages/ckeditor5-keyboard-marker/typings/types.d.ts index 4333ece78..09be57e1c 100644 --- a/packages/ckeditor5-keyboard-marker/typings/types.d.ts +++ b/packages/ckeditor5-keyboard-marker/typings/types.d.ts @@ -1,4 +1,4 @@ -declare module '*.svg' { +declare module '*.svg?raw' { const content: string; export default content; } diff --git a/packages/ckeditor5-math/src/index.ts b/packages/ckeditor5-math/src/index.ts index f33a90620..6d6982ae2 100644 --- a/packages/ckeditor5-math/src/index.ts +++ b/packages/ckeditor5-math/src/index.ts @@ -1,4 +1,4 @@ -import ckeditor from './../theme/icons/math.svg'; +import ckeditor from './../theme/icons/math.svg?raw'; import './augmentation.js'; import "../theme/mathform.css"; diff --git a/packages/ckeditor5-math/src/mathui.ts b/packages/ckeditor5-math/src/mathui.ts index a4efff473..4c4a2794c 100644 --- a/packages/ckeditor5-math/src/mathui.ts +++ b/packages/ckeditor5-math/src/mathui.ts @@ -1,6 +1,6 @@ import MathEditing from './mathediting.js'; import MainFormView from './ui/mainformview.js'; -import mathIcon from '../theme/icons/math.svg'; +import mathIcon from '../theme/icons/math.svg?raw'; import { Plugin, ClickObserver, ButtonView, ContextualBalloon, clickOutsideHandler, CKEditorError, uid } from 'ckeditor5'; import { getBalloonPositionData } from './utils.js'; import MathCommand from './mathcommand.js'; @@ -54,10 +54,10 @@ export default class MathUI extends Plugin { this._addFormView(); this._balloon.showStack( 'main' ); - + requestAnimationFrame(() => { this.formView?.mathInputView.fieldView.element?.focus(); - }); + }); } private _createFormView() { diff --git a/packages/ckeditor5-math/typings/types.d.ts b/packages/ckeditor5-math/typings/types.d.ts index 4333ece78..09be57e1c 100644 --- a/packages/ckeditor5-math/typings/types.d.ts +++ b/packages/ckeditor5-math/typings/types.d.ts @@ -1,4 +1,4 @@ -declare module '*.svg' { +declare module '*.svg?raw' { const content: string; export default content; } diff --git a/packages/ckeditor5-mermaid/src/index.ts b/packages/ckeditor5-mermaid/src/index.ts index 58fa30892..d4f750bc8 100644 --- a/packages/ckeditor5-mermaid/src/index.ts +++ b/packages/ckeditor5-mermaid/src/index.ts @@ -1,11 +1,11 @@ import './augmentation.js'; export { default as Mermaid } from './mermaid.js'; -import infoIcon from './../theme/icons/info.svg'; -import insertMermaidIcon from './../theme/icons/insert.svg'; -import previewModeIcon from './../theme/icons/preview-mode.svg'; -import splitModeIcon from './../theme/icons/split-mode.svg'; -import sourceModeIcon from './../theme/icons/source-mode.svg'; +import infoIcon from './../theme/icons/info.svg?raw'; +import insertMermaidIcon from './../theme/icons/insert.svg?raw'; +import previewModeIcon from './../theme/icons/preview-mode.svg?raw'; +import splitModeIcon from './../theme/icons/split-mode.svg?raw'; +import sourceModeIcon from './../theme/icons/source-mode.svg?raw'; import "../theme/mermaid.css"; export const icons = { diff --git a/packages/ckeditor5-mermaid/src/mermaidui.ts b/packages/ckeditor5-mermaid/src/mermaidui.ts index d5fc6519e..0edc9c833 100644 --- a/packages/ckeditor5-mermaid/src/mermaidui.ts +++ b/packages/ckeditor5-mermaid/src/mermaidui.ts @@ -2,11 +2,11 @@ * @module mermaid/mermaidui */ -import insertMermaidIcon from '../theme/icons/insert.svg'; -import previewModeIcon from '../theme/icons/preview-mode.svg'; -import splitModeIcon from '../theme/icons/split-mode.svg'; -import sourceModeIcon from '../theme/icons/source-mode.svg'; -import infoIcon from '../theme/icons/info.svg'; +import insertMermaidIcon from '../theme/icons/insert.svg?raw'; +import previewModeIcon from '../theme/icons/preview-mode.svg?raw'; +import splitModeIcon from '../theme/icons/split-mode.svg?raw'; +import sourceModeIcon from '../theme/icons/source-mode.svg?raw'; +import infoIcon from '../theme/icons/info.svg?raw'; import { ButtonView, Editor, ModelElement, Locale, Observable, Plugin } from 'ckeditor5'; import InsertMermaidCommand from './commands/insertMermaidCommand.js'; diff --git a/packages/ckeditor5-mermaid/tests/index.ts b/packages/ckeditor5-mermaid/tests/index.ts index 06f8e2d83..a2ec5fd56 100644 --- a/packages/ckeditor5-mermaid/tests/index.ts +++ b/packages/ckeditor5-mermaid/tests/index.ts @@ -1,11 +1,11 @@ import { Mermaid as MermaidDll, icons } from '../src/index.js'; import Mermaid from '../src/mermaid.js'; -import infoIcon from './../theme/icons/info.svg'; -import insertMermaidIcon from './../theme/icons/insert.svg'; -import previewModeIcon from './../theme/icons/preview-mode.svg'; -import splitModeIcon from './../theme/icons/split-mode.svg'; -import sourceModeIcon from './../theme/icons/source-mode.svg'; +import infoIcon from './../theme/icons/info.svg?raw'; +import insertMermaidIcon from './../theme/icons/insert.svg?raw'; +import previewModeIcon from './../theme/icons/preview-mode.svg?raw'; +import splitModeIcon from './../theme/icons/split-mode.svg?raw'; +import sourceModeIcon from './../theme/icons/source-mode.svg?raw'; import { describe, it } from 'vitest'; import { expect } from 'vitest'; diff --git a/packages/ckeditor5-mermaid/typings/types.d.ts b/packages/ckeditor5-mermaid/typings/types.d.ts index 4333ece78..09be57e1c 100644 --- a/packages/ckeditor5-mermaid/typings/types.d.ts +++ b/packages/ckeditor5-mermaid/typings/types.d.ts @@ -1,4 +1,4 @@ -declare module '*.svg' { +declare module '*.svg?raw' { const content: string; export default content; } diff --git a/packages/ckeditor5/src/plugins/file_upload/progressbarview.ts b/packages/ckeditor5/src/plugins/file_upload/progressbarview.ts index daa888751..24d5a1a35 100644 --- a/packages/ckeditor5/src/plugins/file_upload/progressbarview.ts +++ b/packages/ckeditor5/src/plugins/file_upload/progressbarview.ts @@ -1,4 +1,4 @@ -import cancelIcon from '@ckeditor/ckeditor5-core/theme/icons/cancel.svg'; +import cancelIcon from '@ckeditor/ckeditor5-core/theme/icons/cancel.svg?raw'; import { ButtonView, Locale, toUnit, View } from 'ckeditor5'; const toPx = toUnit('%'); From b012624b67898aeb9dba3f78c41ecbb222fcd6c3 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 19:26:56 +0300 Subject: [PATCH 14/85] chore(dx/client): fix emoji import error --- apps/client/src/widgets/type_widgets/ckeditor/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/widgets/type_widgets/ckeditor/config.ts b/apps/client/src/widgets/type_widgets/ckeditor/config.ts index 4eb15e913..7bb78aa93 100644 --- a/apps/client/src/widgets/type_widgets/ckeditor/config.ts +++ b/apps/client/src/widgets/type_widgets/ckeditor/config.ts @@ -4,7 +4,7 @@ import { buildExtraCommands, type EditorConfig, PREMIUM_PLUGINS } from "@trilium import { getHighlightJsNameForMime } from "../../../services/mime_types.js"; import options from "../../../services/options.js"; import { ensureMimeTypesForHighlighting, isSyntaxHighlightEnabled } from "../../../services/syntax_highlight.js"; -import emojiDefinitionsUrl from "@triliumnext/ckeditor5/emoji_definitions/en.json?url"; +import emojiDefinitionsUrl from "@triliumnext/ckeditor5/src/emoji_definitions/en.json?url"; import { copyTextWithToast } from "../../../services/clipboard_ext.js"; import getTemplates from "./snippets.js"; import { t } from "../../../services/i18n.js"; From c92860ae49258ad789d339c6c8113598f0601bed Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 19:27:05 +0300 Subject: [PATCH 15/85] chore(dx/client): fix error when optimizing premium plugins --- packages/ckeditor5/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index 311e70b77..81d63ffd1 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -25,6 +25,7 @@ "ckeditor5-premium-features": "46.0.2" }, "devDependencies": { + "@smithy/middleware-retry": "4.1.20", "@types/jquery": "3.5.33" } } From 42559364e46830b52093d1b6306e44ea03a0c2c7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 20:28:21 +0300 Subject: [PATCH 16/85] chore(dx/server): improve asset management for DB init --- apps/server/src/services/assets.ts | 10 ++++++++++ apps/server/src/services/resource_dir.ts | 7 ------- apps/server/src/services/sql_init.ts | 8 ++++---- 3 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 apps/server/src/services/assets.ts diff --git a/apps/server/src/services/assets.ts b/apps/server/src/services/assets.ts new file mode 100644 index 000000000..782ca02d7 --- /dev/null +++ b/apps/server/src/services/assets.ts @@ -0,0 +1,10 @@ +import { join } from "path"; + +const ASSET_ROOT_DIR = process.env.SERVER_ASSET_ROOT_DIR; +if (!ASSET_ROOT_DIR) { + console.error("Missing SERVER_ASSET_ROOT_DIR env."); + process.exit(1); +} + +/** Contains database initialization data such as the demo database and the schema. */ +export const DB_INIT_DIR = join(ASSET_ROOT_DIR, "db") diff --git a/apps/server/src/services/resource_dir.ts b/apps/server/src/services/resource_dir.ts index 35c056af2..c4ecf757f 100644 --- a/apps/server/src/services/resource_dir.ts +++ b/apps/server/src/services/resource_dir.ts @@ -6,15 +6,8 @@ export const RESOURCE_DIR = path.join(getResourceDir(), "assets"); // where the "trilium" executable is const ELECTRON_APP_ROOT_DIR = path.resolve(RESOURCE_DIR, "../.."); -const DB_INIT_DIR = path.resolve(RESOURCE_DIR, "db"); - -if (!fs.existsSync(DB_INIT_DIR)) { - console.error(`Could not find DB initialization directory: ${DB_INIT_DIR}`); - process.exit(1); -} export default { RESOURCE_DIR, - DB_INIT_DIR, ELECTRON_APP_ROOT_DIR }; diff --git a/apps/server/src/services/sql_init.ts b/apps/server/src/services/sql_init.ts index 9fc9ba2e5..0cc7bb255 100644 --- a/apps/server/src/services/sql_init.ts +++ b/apps/server/src/services/sql_init.ts @@ -1,6 +1,5 @@ import log from "./log.js"; import fs from "fs"; -import resourceDir from "./resource_dir.js"; import sql from "./sql.js"; import { isElectron, deferred } from "./utils.js"; import optionService from "./options.js"; @@ -17,6 +16,7 @@ import zipImportService from "./import/zip.js"; import password from "./encryption/password.js"; import backup from "./backup.js"; import eventService from "./events.js"; +import { DB_INIT_DIR } from "./assets.js"; export const dbReady = deferred(); @@ -75,8 +75,8 @@ async function createInitialDatabase(skipDemoDb?: boolean) { throw new Error("DB is already initialized"); } - const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, "utf-8"); - const demoFile = (!skipDemoDb ? fs.readFileSync(`${resourceDir.DB_INIT_DIR}/demo.zip`) : null); + const schema = fs.readFileSync(`${DB_INIT_DIR}/schema.sql`, "utf-8"); + const demoFile = (!skipDemoDb ? fs.readFileSync(`${DB_INIT_DIR}/demo.zip`) : null); let rootNote!: BNote; @@ -153,7 +153,7 @@ async function createDatabaseForSync(options: OptionRow[], syncServerHost = "", throw new Error("DB is already initialized"); } - const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, "utf8"); + const schema = fs.readFileSync(`${DB_INIT_DIR}/schema.sql`, "utf8"); // We have to import async since options init requires keyboard actions which require translations. const optionsInitService = (await import("./options_init.js")).default; From 91ae9d75f74fd56b4d14bbcdb6760850c276010d Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 20:31:51 +0300 Subject: [PATCH 17/85] Revert "chore(dx/server): improve asset management for DB init" This reverts commit 42559364e46830b52093d1b6306e44ea03a0c2c7. --- apps/server/src/services/assets.ts | 10 ---------- apps/server/src/services/resource_dir.ts | 7 +++++++ apps/server/src/services/sql_init.ts | 8 ++++---- 3 files changed, 11 insertions(+), 14 deletions(-) delete mode 100644 apps/server/src/services/assets.ts diff --git a/apps/server/src/services/assets.ts b/apps/server/src/services/assets.ts deleted file mode 100644 index 782ca02d7..000000000 --- a/apps/server/src/services/assets.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { join } from "path"; - -const ASSET_ROOT_DIR = process.env.SERVER_ASSET_ROOT_DIR; -if (!ASSET_ROOT_DIR) { - console.error("Missing SERVER_ASSET_ROOT_DIR env."); - process.exit(1); -} - -/** Contains database initialization data such as the demo database and the schema. */ -export const DB_INIT_DIR = join(ASSET_ROOT_DIR, "db") diff --git a/apps/server/src/services/resource_dir.ts b/apps/server/src/services/resource_dir.ts index c4ecf757f..35c056af2 100644 --- a/apps/server/src/services/resource_dir.ts +++ b/apps/server/src/services/resource_dir.ts @@ -6,8 +6,15 @@ export const RESOURCE_DIR = path.join(getResourceDir(), "assets"); // where the "trilium" executable is const ELECTRON_APP_ROOT_DIR = path.resolve(RESOURCE_DIR, "../.."); +const DB_INIT_DIR = path.resolve(RESOURCE_DIR, "db"); + +if (!fs.existsSync(DB_INIT_DIR)) { + console.error(`Could not find DB initialization directory: ${DB_INIT_DIR}`); + process.exit(1); +} export default { RESOURCE_DIR, + DB_INIT_DIR, ELECTRON_APP_ROOT_DIR }; diff --git a/apps/server/src/services/sql_init.ts b/apps/server/src/services/sql_init.ts index 0cc7bb255..9fc9ba2e5 100644 --- a/apps/server/src/services/sql_init.ts +++ b/apps/server/src/services/sql_init.ts @@ -1,5 +1,6 @@ import log from "./log.js"; import fs from "fs"; +import resourceDir from "./resource_dir.js"; import sql from "./sql.js"; import { isElectron, deferred } from "./utils.js"; import optionService from "./options.js"; @@ -16,7 +17,6 @@ import zipImportService from "./import/zip.js"; import password from "./encryption/password.js"; import backup from "./backup.js"; import eventService from "./events.js"; -import { DB_INIT_DIR } from "./assets.js"; export const dbReady = deferred(); @@ -75,8 +75,8 @@ async function createInitialDatabase(skipDemoDb?: boolean) { throw new Error("DB is already initialized"); } - const schema = fs.readFileSync(`${DB_INIT_DIR}/schema.sql`, "utf-8"); - const demoFile = (!skipDemoDb ? fs.readFileSync(`${DB_INIT_DIR}/demo.zip`) : null); + const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, "utf-8"); + const demoFile = (!skipDemoDb ? fs.readFileSync(`${resourceDir.DB_INIT_DIR}/demo.zip`) : null); let rootNote!: BNote; @@ -153,7 +153,7 @@ async function createDatabaseForSync(options: OptionRow[], syncServerHost = "", throw new Error("DB is already initialized"); } - const schema = fs.readFileSync(`${DB_INIT_DIR}/schema.sql`, "utf8"); + const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, "utf8"); // We have to import async since options init requires keyboard actions which require translations. const optionsInitService = (await import("./options_init.js")).default; From 51d879ba6f71e49bc179638233a27f888e986b09 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 20:42:46 +0300 Subject: [PATCH 18/85] style(client): toast sometimes going out of bounds --- apps/client/src/stylesheets/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index a624fe686..2ec0c1daa 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -1134,6 +1134,7 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href .toast-body { white-space: preserve-breaks; + overflow: hidden; } .ck-mentions .ck-button { From 3d38a2aa144de433f98567750320402b2da48ce7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 20:43:20 +0300 Subject: [PATCH 19/85] chore(dx/desktop): get dev mode for Electron --- apps/desktop/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 037fd23c0..5b76fe8e8 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -32,6 +32,7 @@ "forge": "./electron-forge/forge.config.ts" }, "scripts": { + "dev": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=../server/src electron src/electron-main.ts", "start-prod": "nx build desktop && cross-env TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=dist TRILIUM_PORT=37841 electron dist/main.js" }, "license": "AGPL-3.0-only", From 886c694db7e1b82239e8baa85bcb66d312fa87db Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 20:43:33 +0300 Subject: [PATCH 20/85] chore(dx/server): update server:start command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 726a1260e..d7bfb82fc 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "server:test": "nx test server", "server:build": "nx build server", "server:coverage": "nx test server --coverage", - "server:start": "nx run server:serve --outputStyle stream", + "server:start": "pnpm run --filter server dev", "server:start-prod": "nx run server:start-prod", "electron:build": "nx build desktop", "chore:ci-update-nightly-version": "tsx ./scripts/update-nightly-version.ts", From 1b25275b2e28b4e3af4153cb6f52476f753bbc16 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 20:43:48 +0300 Subject: [PATCH 21/85] fix(dx/electron): web contents not working --- apps/server/src/app.ts | 2 +- apps/server/src/services/window.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index a7bc00b42..a66a72837 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -122,7 +122,7 @@ export default async function buildApp() { startScheduledCleanup(); if (utils.isElectron) { - (await import("@electron/remote/main/index.js")).initialize(); + (await import("@electron/remote/main")).initialize(); } return app; diff --git a/apps/server/src/services/window.ts b/apps/server/src/services/window.ts index 9ddd5e4ff..d8228ca19 100644 --- a/apps/server/src/services/window.ts +++ b/apps/server/src/services/window.ts @@ -224,7 +224,7 @@ function getWindowExtraOpts() { } async function configureWebContents(webContents: WebContents, spellcheckEnabled: boolean) { - const remoteMain = (await import("@electron/remote/main/index.js")).default; + const remoteMain = (await import("@electron/remote/main")); remoteMain.enable(webContents); webContents.setWindowOpenHandler((details) => { From cf1180faa9a26b58f5fa826ac1bcca1afde3280b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 21:05:23 +0300 Subject: [PATCH 22/85] chore(dx/server): remove babel compacting for tiny gain in perf --- apps/server/src/routes/assets.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index b076f6db2..cd413584b 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -29,7 +29,11 @@ async function register(app: express.Application) { base: `/${assetUrlFragment}/`, root: path.join(srcRoot, "../client"), plugins: [ - preact() + preact({ + babel: { + compact: false + } + }) ], define: { "process.env.IS_PREACT": JSON.stringify("true"), From 0e5108bd08a77870398f7b084b0888fce96f31f5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 22:30:07 +0300 Subject: [PATCH 23/85] chore(dx/server): start building & copying assets --- apps/server/package.json | 48 ++------------------------------ apps/server/scripts/build.ts | 53 ++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 46 deletions(-) create mode 100644 apps/server/scripts/build.ts diff --git a/apps/server/package.json b/apps/server/package.json index 93fa686b0..347c8595a 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -284,38 +284,13 @@ } }, "options": { - "main": "apps/server/src/main.ts", - "outputPath": "apps/server/dist", - "tsConfig": "apps/server/tsconfig.app.json", - "platform": "node", - "external": [ - "electron", - "@electron/remote", - "better-sqlite3", - "./xhr-sync-worker.js" - ], - "format": [ - "cjs" - ], "declarationRootDir": "apps/server/src", "thirdParty": true, "declaration": false, - "esbuildOptions": { - "splitting": false, - "loader": { - ".css": "text", - ".ejs": "text" - } - }, "additionalEntryPoints": [ "apps/server/src/docker_healthcheck.ts" ], "assets": [ - { - "glob": "**/*", - "input": "apps/server/src/assets", - "output": "assets" - }, { "glob": "**/*", "input": "packages/share-theme/src/templates", @@ -328,26 +303,6 @@ "ignore": [ "webpack-stats.json" ] - }, - { - "glob": "**/*", - "input": "apps/server/node_modules/better-sqlite3", - "output": "node_modules/better-sqlite3" - }, - { - "glob": "**/*", - "input": "apps/server/node_modules/bindings", - "output": "node_modules/bindings" - }, - { - "glob": "**/*", - "input": "apps/server/node_modules/file-uri-to-path", - "output": "node_modules/file-uri-to-path" - }, - { - "glob": "xhr-sync-worker.js", - "input": "apps/server/node_modules/jsdom/lib/jsdom/living/xhr", - "output": "" } ] } @@ -364,7 +319,8 @@ } }, "scripts": { - "dev": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts" + "dev": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", + "build": "tsx scripts/build.ts" }, "main": "./src/main.ts" } \ No newline at end of file diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts new file mode 100644 index 000000000..225333bb0 --- /dev/null +++ b/apps/server/scripts/build.ts @@ -0,0 +1,53 @@ +import * as esbuild from "esbuild"; +import { join } from "path"; +import * as fs from "fs-extra"; + +const projectDir = __dirname + "/.."; +const outDir = join(projectDir, "dist"); + +async function build() { + esbuild.build({ + entryPoints: [ join(projectDir, "src/main.ts") ], + tsconfig: join(projectDir, "tsconfig.app.json"), + platform: "node", + bundle: true, + outdir: outDir, + format: "cjs", + external: [ + "electron", + "@electron/remote", + "better-sqlite3", + "./xhr-sync-worker.js", + "@preact/preset-vite", + "vite" + ], + splitting: false, + loader: { + ".css": "text", + ".ejs": "text" + } + }); +} + +function copyAssets() { + // Copy server assets + fs.copySync(join(projectDir, "src/assets"), join(outDir, "assets")); + + // Copy node modules + fs.mkdir(join(outDir, "node_modules")); + for (const module of [ "better-sqlite3", "bindings", "file-uri-to-path" ]) { + fs.copySync(join(projectDir, "node_modules", module), join(outDir, "node_modules", module), { dereference: true }); + } + + // Copy sync worker. + fs.copySync(join(projectDir, "node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js"), join(outDir, "xhr-sync-worker.js")); +} + +async function main() { + fs.rmSync(outDir, { recursive: true }); + fs.mkdirSync(outDir); + await build(); + copyAssets(); +} + +main(); From dbf016adaf6589215110a505eafae97f273bd9a2 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 22:43:21 +0300 Subject: [PATCH 24/85] chore(dx/server): build all entrypoints with right ext --- apps/server/scripts/build.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 225333bb0..85db1651d 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -7,11 +7,17 @@ const outDir = join(projectDir, "dist"); async function build() { esbuild.build({ - entryPoints: [ join(projectDir, "src/main.ts") ], + entryPoints: [ + join(projectDir, "src/main.ts"), + join(projectDir, "src/docker_healthcheck.ts") + ], tsconfig: join(projectDir, "tsconfig.app.json"), platform: "node", bundle: true, outdir: outDir, + outExtension: { + ".js": ".cjs" + }, format: "cjs", external: [ "electron", @@ -44,8 +50,7 @@ function copyAssets() { } async function main() { - fs.rmSync(outDir, { recursive: true }); - fs.mkdirSync(outDir); + fs.emptyDirSync(outDir); await build(); copyAssets(); } From f3f7ff5622d48e88ef86608f3b5d0c85dd985943 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 22:48:50 +0300 Subject: [PATCH 25/85] chore(dx/server): copy share templates when building --- apps/server/scripts/build.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 85db1651d..7011f4d5c 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -37,16 +37,25 @@ async function build() { function copyAssets() { // Copy server assets - fs.copySync(join(projectDir, "src/assets"), join(outDir, "assets")); + copy("src/assets", "assets/"); // Copy node modules - fs.mkdir(join(outDir, "node_modules")); for (const module of [ "better-sqlite3", "bindings", "file-uri-to-path" ]) { - fs.copySync(join(projectDir, "node_modules", module), join(outDir, "node_modules", module), { dereference: true }); + copy(`node_modules/${module}`, `node_modules/${module}/`); } // Copy sync worker. - fs.copySync(join(projectDir, "node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js"), join(outDir, "xhr-sync-worker.js")); + copy("node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); + + // Copy share templates. + copy("../../packages/share-theme/src/templates", "share-theme/templates/"); +} + +function copy(projectDirPath: string, outDirPath: string) { + if (outDirPath.endsWith("/")) { + fs.mkdirpSync(join(outDirPath)); + } + fs.copySync(join(projectDir, projectDirPath), join(outDir, outDirPath), { dereference: true }); } async function main() { From f4a56d4e1946eb4b3ce43ea06f42c0f719f8829f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 23:02:41 +0300 Subject: [PATCH 26/85] chore(dx/client): get vite build to work --- apps/client/package.json | 3 +++ .../{vite.config.mts.bak => vite.config.mts} | 27 +------------------ 2 files changed, 4 insertions(+), 26 deletions(-) rename apps/client/{vite.config.mts.bak => vite.config.mts} (82%) diff --git a/apps/client/package.json b/apps/client/package.json index 27811a06e..381b091bc 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -72,6 +72,9 @@ "script-loader": "0.7.2", "vite-plugin-static-copy": "3.1.2" }, + "scripts": { + "build": "vite build" + }, "nx": { "name": "client", "targets": { diff --git a/apps/client/vite.config.mts.bak b/apps/client/vite.config.mts similarity index 82% rename from apps/client/vite.config.mts.bak rename to apps/client/vite.config.mts index 72ef792ac..29ee10ef5 100644 --- a/apps/client/vite.config.mts.bak +++ b/apps/client/vite.config.mts @@ -2,7 +2,6 @@ import { join, resolve } from 'path'; import { defineConfig, type Plugin } from 'vite'; import { viteStaticCopy } from 'vite-plugin-static-copy' -import asset_path from './src/asset_path'; import webpackStatsPlugin from 'rollup-plugin-webpack-stats'; import preact from "@preact/preset-vite"; @@ -11,15 +10,7 @@ const assets = [ "assets", "stylesheets", "fonts", "translations" ]; export default defineConfig(() => ({ root: __dirname, cacheDir: '../../node_modules/.vite/apps/client', - base: process.env.NODE_ENV === "production" ? "" : asset_path, - server: { - port: 4200, - host: 'localhost', - }, - preview: { - port: 4300, - host: 'localhost', - }, + base: "", plugins: [ preact(), viteStaticCopy({ @@ -58,10 +49,6 @@ export default defineConfig(() => ({ "preact/hooks" ] }, - // Uncomment this if you are using workers. - // worker: { - // plugins: [ nxViteTsPaths() ], - // }, build: { target: "esnext", outDir: './dist', @@ -100,18 +87,6 @@ export default defineConfig(() => ({ "./src/test/setup.ts" ] }, - optimizeDeps: { - exclude: [ - "@triliumnext/highlightjs" - ] - }, - css: { - preprocessorOptions: { - scss: { - quietDeps: true - } - } - }, commonjsOptions: { transformMixedEsModules: true, }, From a06f2aeb8bf2f0b50a4b353f1b8f0b5b2f61702a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 23:03:21 +0300 Subject: [PATCH 27/85] chore(dx/server): trigger build of client & copy artifacts --- apps/server/scripts/build.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 7011f4d5c..41e826453 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -1,6 +1,7 @@ import * as esbuild from "esbuild"; import { join } from "path"; import * as fs from "fs-extra"; +import * as child_process from "child_process"; const projectDir = __dirname + "/.."; const outDir = join(projectDir, "dist"); @@ -51,6 +52,17 @@ function copyAssets() { copy("../../packages/share-theme/src/templates", "share-theme/templates/"); } +function buildAndCopyClient() { + // Trigger the build. + child_process.execSync("pnpm build", { cwd: clientDir, stdio: "inherit" }); + + // Copy the artifacts. + copy("../client/dist", "public/"); + + // Remove unnecessary files. + deleteFromOutput("public/webpack-stats.json"); +} + function copy(projectDirPath: string, outDirPath: string) { if (outDirPath.endsWith("/")) { fs.mkdirpSync(join(outDirPath)); @@ -58,10 +70,15 @@ function copy(projectDirPath: string, outDirPath: string) { fs.copySync(join(projectDir, projectDirPath), join(outDir, outDirPath), { dereference: true }); } +function deleteFromOutput(path: string) { + fs.rmSync(join(outDir, path), { recursive: true }); +} + async function main() { fs.emptyDirSync(outDir); await build(); copyAssets(); + buildAndCopyClient(); } main(); From a3ea52968f2907ee2ed4e7d0e3101ca66d269d81 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 23:03:30 +0300 Subject: [PATCH 28/85] chore(dx/client): fix codemirror dep --- packages/codemirror/package.json | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json index 45b0a0544..f6d93d94a 100644 --- a/packages/codemirror/package.json +++ b/packages/codemirror/package.json @@ -3,18 +3,7 @@ "version": "0.0.1", "private": true, "type": "module", - "main": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "development": "./src/index.ts", - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "default": "./dist/index.js" - } - }, + "main": "./src/index.ts", "nx": { "name": "codemirror" }, From 9266fe63b94e4c19850c863549470f93c53219a7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 23:03:38 +0300 Subject: [PATCH 29/85] chore(dx/client): disable share CSS for now --- apps/client/src/share.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/share.ts b/apps/client/src/share.ts index c97f18c49..b260b4115 100644 --- a/apps/client/src/share.ts +++ b/apps/client/src/share.ts @@ -1,6 +1,6 @@ import "normalize.css"; import "boxicons/css/boxicons.min.css"; -import "@triliumnext/ckeditor5/content.css"; +// import "@triliumnext/ckeditor5/content.css"; import "@triliumnext/share-theme/styles/index.css"; import "@triliumnext/share-theme/scripts/index.js"; From 3600b468243fa3596a194d2c8ee488f11cb616b6 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 23:04:18 +0300 Subject: [PATCH 30/85] chore(dx/server): fix missing path to client --- apps/server/scripts/build.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 41e826453..b6921a4c0 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -54,7 +54,7 @@ function copyAssets() { function buildAndCopyClient() { // Trigger the build. - child_process.execSync("pnpm build", { cwd: clientDir, stdio: "inherit" }); + child_process.execSync("pnpm build", { cwd: join(projectDir, "../client"), stdio: "inherit" }); // Copy the artifacts. copy("../client/dist", "public/"); From 897b896c1168cd545d03d2de4ca5193c573b6a63 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 23:12:52 +0300 Subject: [PATCH 31/85] chore(dx/server): fix vite interfering in production --- apps/server/src/routes/assets.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index cd413584b..6c8dc6bc3 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -4,8 +4,6 @@ import express from "express"; import { getResourceDir, isDev } from "../services/utils.js"; import type serveStatic from "serve-static"; import { existsSync } from "fs"; -import { createServer as createViteServer } from "vite"; -import preact from "@preact/preset-vite"; const persistentCacheStatic = (root: string, options?: serveStatic.ServeStaticOptions>>) => { if (!isDev) { @@ -21,7 +19,9 @@ async function register(app: express.Application) { const srcRoot = path.join(__dirname, "..", ".."); const resourceDir = getResourceDir(); - if (isDev) { + if (process.env.NODE_ENV === "development") { + const { createServer: createViteServer } = await import("vite"); + const { preact } = await import("@preact/preset-vite"); const vite = await createViteServer({ server: { middlewareMode: true }, appType: "custom", From 4b9688af04b95a185f979c713344484431aee7cc Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 31 Aug 2025 23:19:07 +0300 Subject: [PATCH 32/85] chore(dx/server): minify output --- apps/server/scripts/build.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index b6921a4c0..65a07d3bc 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -32,7 +32,11 @@ async function build() { loader: { ".css": "text", ".ejs": "text" - } + }, + define: { + "process.env.NODE_ENV": JSON.stringify("production"), + }, + minify: true }); } From 01022546e8d54e17b44b94955ff5a510c893c8ea Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 11:33:18 +0300 Subject: [PATCH 33/85] fix(dx/client): insert math not working due to icon import --- packages/ckeditor5-math/src/ui/mainformview.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/ckeditor5-math/src/ui/mainformview.ts b/packages/ckeditor5-math/src/ui/mainformview.ts index 751c3c679..2d1c59793 100644 --- a/packages/ckeditor5-math/src/ui/mainformview.ts +++ b/packages/ckeditor5-math/src/ui/mainformview.ts @@ -1,5 +1,6 @@ import { ButtonView, createLabeledTextarea, FocusCycler, LabelView, LabeledFieldView, submitHandler, SwitchButtonView, View, ViewCollection, type TextareaView, type FocusableView, Locale, FocusTracker, KeystrokeHandler } from 'ckeditor5'; -import { IconCheck, IconCancel } from "@ckeditor/ckeditor5-icons"; +import IconCheck from "@ckeditor/ckeditor5-icons/theme/icons/check.svg?raw"; +import IconCancel from "@ckeditor/ckeditor5-icons/theme/icons/cancel.svg?raw"; import { extractDelimiters, hasDelimiters } from '../utils.js'; import MathView from './mathview.js'; import '../../theme/mathform.css'; From 5cf182cf9852d18bcde750e779320e0e67132fd2 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 11:50:41 +0300 Subject: [PATCH 34/85] fix(dx/client): not serving Vite due to NODE_ENV --- apps/desktop/package.json | 2 +- apps/server/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 5b76fe8e8..25d622b77 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -32,7 +32,7 @@ "forge": "./electron-forge/forge.config.ts" }, "scripts": { - "dev": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=../server/src electron src/electron-main.ts", + "dev": "cross-env NODE_OPTIONS=\"--import tsx\" NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=../server/src electron src/electron-main.ts", "start-prod": "nx build desktop && cross-env TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=dist TRILIUM_PORT=37841 electron dist/main.js" }, "license": "AGPL-3.0-only", diff --git a/apps/server/package.json b/apps/server/package.json index 347c8595a..bff80d21c 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -319,7 +319,7 @@ } }, "scripts": { - "dev": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", + "dev": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", "build": "tsx scripts/build.ts" }, "main": "./src/main.ts" From 35743de0dfe4d0a97b6ace2cc3a03a97095f26e8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 11:53:17 +0300 Subject: [PATCH 35/85] fix(dx/client): client not starting due to duplicate config --- apps/client/vite.config.mts | 27 ++++++++++++++++++++------- apps/server/src/routes/assets.ts | 12 +----------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/apps/client/vite.config.mts b/apps/client/vite.config.mts index 29ee10ef5..a07d6120f 100644 --- a/apps/client/vite.config.mts +++ b/apps/client/vite.config.mts @@ -7,12 +7,18 @@ import preact from "@preact/preset-vite"; const assets = [ "assets", "stylesheets", "fonts", "translations" ]; -export default defineConfig(() => ({ - root: __dirname, - cacheDir: '../../node_modules/.vite/apps/client', - base: "", - plugins: [ - preact(), +const isDev = process.env.NODE_ENV === "development"; +let plugins: any = [ + preact({ + babel: { + compact: !isDev + } + }) +]; + +if (!isDev) { + plugins = [ + ...plugins, viteStaticCopy({ targets: assets.map((asset) => ({ src: `src/${asset}/*`, @@ -29,7 +35,14 @@ export default defineConfig(() => ({ ] }), webpackStatsPlugin() - ] as Plugin[], + ] +} + +export default defineConfig(() => ({ + root: __dirname, + cacheDir: '../../node_modules/.vite/apps/client', + base: "", + plugins, resolve: { alias: [ { diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index 6c8dc6bc3..02e69c449 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -27,17 +27,7 @@ async function register(app: express.Application) { appType: "custom", cacheDir: path.join(srcRoot, "../../.cache/vite"), base: `/${assetUrlFragment}/`, - root: path.join(srcRoot, "../client"), - plugins: [ - preact({ - babel: { - compact: false - } - }) - ], - define: { - "process.env.IS_PREACT": JSON.stringify("true"), - } + root: path.join(srcRoot, "../client") }); app.use(`/${assetUrlFragment}/`, (req, res, next) => { req.url = `/${assetUrlFragment}` + req.url; From 978e6b9ddec313079a0bf6d21439088a601da5f4 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 19:22:46 +0300 Subject: [PATCH 36/85] chore(dx/server): unnecessary import --- apps/server/scripts/build.ts | 1 - apps/server/src/routes/assets.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 65a07d3bc..29147ec5b 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -25,7 +25,6 @@ async function build() { "@electron/remote", "better-sqlite3", "./xhr-sync-worker.js", - "@preact/preset-vite", "vite" ], splitting: false, diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index 02e69c449..a1a2bfb63 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -21,7 +21,6 @@ async function register(app: express.Application) { if (process.env.NODE_ENV === "development") { const { createServer: createViteServer } = await import("vite"); - const { preact } = await import("@preact/preset-vite"); const vite = await createViteServer({ server: { middlewareMode: true }, appType: "custom", From 1e991c0526037c1d788a80c3a95bc498f9c6f7a8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 19:36:14 +0300 Subject: [PATCH 37/85] refactor(dx/server): extract basic build commands to separate file --- apps/server/scripts/build.ts | 31 ++++++++++--------------------- scripts/build-utils.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 21 deletions(-) create mode 100644 scripts/build-utils.ts diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 29147ec5b..b02969722 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -1,12 +1,13 @@ import * as esbuild from "esbuild"; import { join } from "path"; -import * as fs from "fs-extra"; import * as child_process from "child_process"; +import BuildHelper from "../../../scripts/build-utils"; const projectDir = __dirname + "/.."; const outDir = join(projectDir, "dist"); +const build = new BuildHelper("apps/server"); -async function build() { +async function runBuild() { esbuild.build({ entryPoints: [ join(projectDir, "src/main.ts"), @@ -41,18 +42,18 @@ async function build() { function copyAssets() { // Copy server assets - copy("src/assets", "assets/"); + build.copy("src/assets", "assets/"); // Copy node modules for (const module of [ "better-sqlite3", "bindings", "file-uri-to-path" ]) { - copy(`node_modules/${module}`, `node_modules/${module}/`); + build.copy(`node_modules/${module}`, `node_modules/${module}/`); } // Copy sync worker. - copy("node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); + build.copy("node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); // Copy share templates. - copy("../../packages/share-theme/src/templates", "share-theme/templates/"); + build.copy("../../packages/share-theme/src/templates", "share-theme/templates/"); } function buildAndCopyClient() { @@ -60,26 +61,14 @@ function buildAndCopyClient() { child_process.execSync("pnpm build", { cwd: join(projectDir, "../client"), stdio: "inherit" }); // Copy the artifacts. - copy("../client/dist", "public/"); + build.copy("../client/dist", "public/"); // Remove unnecessary files. - deleteFromOutput("public/webpack-stats.json"); -} - -function copy(projectDirPath: string, outDirPath: string) { - if (outDirPath.endsWith("/")) { - fs.mkdirpSync(join(outDirPath)); - } - fs.copySync(join(projectDir, projectDirPath), join(outDir, outDirPath), { dereference: true }); -} - -function deleteFromOutput(path: string) { - fs.rmSync(join(outDir, path), { recursive: true }); + build.deleteFromOutput("public/webpack-stats.json"); } async function main() { - fs.emptyDirSync(outDir); - await build(); + await runBuild(); copyAssets(); buildAndCopyClient(); } diff --git a/scripts/build-utils.ts b/scripts/build-utils.ts new file mode 100644 index 000000000..27790488b --- /dev/null +++ b/scripts/build-utils.ts @@ -0,0 +1,28 @@ +import { rmSync } from "fs"; +import { copySync, emptyDirSync, mkdirpSync } from "fs-extra"; +import { join } from "path"; + +export default class BuildHelper { + + private projectDir: string; + private outDir: string; + + constructor(projectPath: string) { + this.projectDir = join(__dirname, "..", projectPath); + this.outDir = join(this.projectDir, "dist"); + + emptyDirSync(this.outDir); + } + + copy(projectDirPath: string, outDirPath: string) { + if (outDirPath.endsWith("/")) { + mkdirpSync(join(outDirPath)); + } + copySync(join(this.projectDir, projectDirPath), join(this.outDir, outDirPath), { dereference: true }); + } + + deleteFromOutput(path: string) { + rmSync(join(this.outDir, path), { recursive: true }); + } + +} From 72a256eccf3d365cab8f2b73090b007916eaf456 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 20:29:34 +0300 Subject: [PATCH 38/85] refactor(dx/server): simplify build script even further --- apps/server/scripts/build.ts | 71 ++++-------------------------------- scripts/build-utils.ts | 48 +++++++++++++++++++++++- 2 files changed, 55 insertions(+), 64 deletions(-) diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index b02969722..c4a17941d 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -1,76 +1,21 @@ -import * as esbuild from "esbuild"; -import { join } from "path"; -import * as child_process from "child_process"; import BuildHelper from "../../../scripts/build-utils"; -const projectDir = __dirname + "/.."; -const outDir = join(projectDir, "dist"); const build = new BuildHelper("apps/server"); -async function runBuild() { - esbuild.build({ - entryPoints: [ - join(projectDir, "src/main.ts"), - join(projectDir, "src/docker_healthcheck.ts") - ], - tsconfig: join(projectDir, "tsconfig.app.json"), - platform: "node", - bundle: true, - outdir: outDir, - outExtension: { - ".js": ".cjs" - }, - format: "cjs", - external: [ - "electron", - "@electron/remote", - "better-sqlite3", - "./xhr-sync-worker.js", - "vite" - ], - splitting: false, - loader: { - ".css": "text", - ".ejs": "text" - }, - define: { - "process.env.NODE_ENV": JSON.stringify("production"), - }, - minify: true - }); -} +async function main() { + build.buildBackend([ "src/main.ts", "src/docker_healthcheck.ts" ]) -function copyAssets() { - // Copy server assets + // Copy assets build.copy("src/assets", "assets/"); + build.copy("../../packages/share-theme/src/templates", "share-theme/templates/"); - // Copy node modules - for (const module of [ "better-sqlite3", "bindings", "file-uri-to-path" ]) { - build.copy(`node_modules/${module}`, `node_modules/${module}/`); - } - - // Copy sync worker. + // Copy node modules dependencies + build.copyNodeModules([ "better-sqlite3", "bindings", "file-uri-to-path" ]); build.copy("node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); - // Copy share templates. - build.copy("../../packages/share-theme/src/templates", "share-theme/templates/"); -} - -function buildAndCopyClient() { - // Trigger the build. - child_process.execSync("pnpm build", { cwd: join(projectDir, "../client"), stdio: "inherit" }); - - // Copy the artifacts. - build.copy("../client/dist", "public/"); - - // Remove unnecessary files. + // Integrate the client. + build.triggerBuildAndCopyTo("apps/client", "public/"); build.deleteFromOutput("public/webpack-stats.json"); } -async function main() { - await runBuild(); - copyAssets(); - buildAndCopyClient(); -} - main(); diff --git a/scripts/build-utils.ts b/scripts/build-utils.ts index 27790488b..5857ffce4 100644 --- a/scripts/build-utils.ts +++ b/scripts/build-utils.ts @@ -1,14 +1,18 @@ +import { execSync } from "child_process"; +import { build as esbuild } from "esbuild"; import { rmSync } from "fs"; import { copySync, emptyDirSync, mkdirpSync } from "fs-extra"; import { join } from "path"; export default class BuildHelper { + private rootDir: string; private projectDir: string; private outDir: string; constructor(projectPath: string) { - this.projectDir = join(__dirname, "..", projectPath); + this.rootDir = join(__dirname, ".."); + this.projectDir = join(this.rootDir, projectPath); this.outDir = join(this.projectDir, "dist"); emptyDirSync(this.outDir); @@ -25,4 +29,46 @@ export default class BuildHelper { rmSync(join(this.outDir, path), { recursive: true }); } + async buildBackend(entryPoints: string[]) { + await esbuild({ + entryPoints: entryPoints.map(e => join(this.projectDir, e)), + tsconfig: join(this.projectDir, "tsconfig.app.json"), + platform: "node", + bundle: true, + outdir: this.outDir, + outExtension: { + ".js": ".cjs" + }, + format: "cjs", + external: [ + "electron", + "@electron/remote", + "better-sqlite3", + "./xhr-sync-worker.js", + "vite" + ], + splitting: false, + loader: { + ".css": "text", + ".ejs": "text" + }, + define: { + "process.env.NODE_ENV": JSON.stringify("production"), + }, + minify: true + }); + } + + triggerBuildAndCopyTo(projectToBuild: string, destPath: string) { + const projectDir = join(this.rootDir, projectToBuild); + execSync("pnpm build", { cwd: projectDir, stdio: "inherit" }); + copySync(join(projectDir, "dist"), join(this.projectDir, "dist", destPath)); + } + + copyNodeModules(nodeModules: string[]) { + for (const module of nodeModules) { + this.copy(`node_modules/${module}`, `node_modules/${module}/`); + } + } + } From 135e2bb10ef81f442c726581a2dacc52265027f5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 20:50:22 +0300 Subject: [PATCH 39/85] chore(dx/desktop): get prod build --- apps/desktop/package.json | 44 +------------------ apps/desktop/scripts/build.ts | 22 ++++++++++ .../desktop/src/{electron-main.ts => main.ts} | 0 apps/server/scripts/build.ts | 4 +- scripts/build-utils.ts | 9 +++- 5 files changed, 33 insertions(+), 46 deletions(-) create mode 100644 apps/desktop/scripts/build.ts rename apps/desktop/src/{electron-main.ts => main.ts} (100%) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 25d622b77..e5cbdf01b 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -33,6 +33,7 @@ }, "scripts": { "dev": "cross-env NODE_OPTIONS=\"--import tsx\" NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=../server/src electron src/electron-main.ts", + "build": "tsx scripts/build.ts", "start-prod": "nx build desktop && cross-env TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=dist TRILIUM_PORT=37841 electron dist/main.js" }, "license": "AGPL-3.0-only", @@ -63,63 +64,20 @@ "options": { "main": "apps/desktop/src/electron-main.ts", "outputPath": "apps/desktop/dist", - "outputFileName": "main.js", "tsConfig": "apps/desktop/tsconfig.app.json", - "platform": "node", "external": [ "electron", "@electron/remote", "better-sqlite3", "./xhr-sync-worker.js" ], - "format": [ - "cjs" - ], "thirdParty": true, - "declaration": false, "esbuildOptions": { "splitting": false, "loader": { ".css": "text" } }, - "assets": [ - { - "glob": "**/*", - "input": "apps/server/dist/node_modules", - "output": "node_modules" - }, - { - "glob": "**/*", - "input": "apps/desktop/node_modules/@electron/remote", - "output": "node_modules/@electron/remote" - }, - { - "glob": "**/*", - "input": "apps/server/dist/assets", - "output": "assets" - }, - { - "glob": "**/*", - "input": "packages/share-theme/src/templates", - "output": "share-theme/templates" - }, - { - "glob": "**/*", - "input": "apps/desktop/src/assets", - "output": "assets" - }, - { - "glob": "**/*", - "input": "apps/server/dist/public", - "output": "public" - }, - { - "glob": "xhr-sync-worker.js", - "input": "apps/server/node_modules/jsdom/lib/jsdom/living/xhr", - "output": "" - } - ], "declarationRootDir": "apps/desktop/src" } }, diff --git a/apps/desktop/scripts/build.ts b/apps/desktop/scripts/build.ts new file mode 100644 index 000000000..07e31f71a --- /dev/null +++ b/apps/desktop/scripts/build.ts @@ -0,0 +1,22 @@ +import BuildHelper from "../../../scripts/build-utils"; + +const build = new BuildHelper("apps/desktop"); + +async function main() { + await build.buildBackend([ "src/main.ts"]); + + // Copy assets. + build.copy("src/assets", "assets/"); + build.copy("/apps/server/src/assets", "assets/"); + build.copy("/packages/share-theme/src/templates", "share-theme/templates/"); + + // Copy node modules dependencies + build.copyNodeModules([ "better-sqlite3", "bindings", "file-uri-to-path", "@electron/remote" ]); + build.copy("/apps/server/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); + + // Integrate the client. + build.triggerBuildAndCopyTo("apps/client", "public/"); + build.deleteFromOutput("public/webpack-stats.json"); +} + +main(); diff --git a/apps/desktop/src/electron-main.ts b/apps/desktop/src/main.ts similarity index 100% rename from apps/desktop/src/electron-main.ts rename to apps/desktop/src/main.ts diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index c4a17941d..5606644f5 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -3,11 +3,11 @@ import BuildHelper from "../../../scripts/build-utils"; const build = new BuildHelper("apps/server"); async function main() { - build.buildBackend([ "src/main.ts", "src/docker_healthcheck.ts" ]) + await build.buildBackend([ "src/main.ts", "src/docker_healthcheck.ts" ]) // Copy assets build.copy("src/assets", "assets/"); - build.copy("../../packages/share-theme/src/templates", "share-theme/templates/"); + build.copy("/packages/share-theme/src/templates", "share-theme/templates/"); // Copy node modules dependencies build.copyNodeModules([ "better-sqlite3", "bindings", "file-uri-to-path" ]); diff --git a/scripts/build-utils.ts b/scripts/build-utils.ts index 5857ffce4..e4706b03b 100644 --- a/scripts/build-utils.ts +++ b/scripts/build-utils.ts @@ -19,10 +19,17 @@ export default class BuildHelper { } copy(projectDirPath: string, outDirPath: string) { + let sourcePath: string; + if (projectDirPath.startsWith("/")) { + sourcePath = join(this.rootDir, projectDirPath.substring(1)); + } else { + sourcePath = join(this.projectDir, projectDirPath); + } + if (outDirPath.endsWith("/")) { mkdirpSync(join(outDirPath)); } - copySync(join(this.projectDir, projectDirPath), join(this.outDir, outDirPath), { dereference: true }); + copySync(sourcePath, join(this.outDir, outDirPath), { dereference: true }); } deleteFromOutput(path: string) { From ebcf4315f7b9a2f1cb93a6ad68999629a7ca30e7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 21:15:17 +0300 Subject: [PATCH 40/85] chore(dx/desktop): remote main not working in dist build --- apps/server/src/app.ts | 2 +- apps/server/src/services/window.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index a66a72837..a7bc00b42 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -122,7 +122,7 @@ export default async function buildApp() { startScheduledCleanup(); if (utils.isElectron) { - (await import("@electron/remote/main")).initialize(); + (await import("@electron/remote/main/index.js")).initialize(); } return app; diff --git a/apps/server/src/services/window.ts b/apps/server/src/services/window.ts index d8228ca19..eeb36f9d7 100644 --- a/apps/server/src/services/window.ts +++ b/apps/server/src/services/window.ts @@ -224,7 +224,7 @@ function getWindowExtraOpts() { } async function configureWebContents(webContents: WebContents, spellcheckEnabled: boolean) { - const remoteMain = (await import("@electron/remote/main")); + const remoteMain = (await import("@electron/remote/main/index.js")); remoteMain.enable(webContents); webContents.setWindowOpenHandler((details) => { From 24859e33c155af38695100b7654a9f2490db5f4a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 21:15:44 +0300 Subject: [PATCH 41/85] chore(dx/desktop): generate prod package.json --- apps/desktop/scripts/build.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/apps/desktop/scripts/build.ts b/apps/desktop/scripts/build.ts index 07e31f71a..1b42b4eab 100644 --- a/apps/desktop/scripts/build.ts +++ b/apps/desktop/scripts/build.ts @@ -1,4 +1,7 @@ +import { join } from "path"; import BuildHelper from "../../../scripts/build-utils"; +import originalPackageJson from "../package.json" with { type: "json" }; +import { writeFileSync } from "fs"; const build = new BuildHelper("apps/desktop"); @@ -17,6 +20,24 @@ async function main() { // Integrate the client. build.triggerBuildAndCopyTo("apps/client", "public/"); build.deleteFromOutput("public/webpack-stats.json"); + + generatePackageJson(); +} + +function generatePackageJson() { + const { version, author, license, description, dependencies, devDependencies } = originalPackageJson; + const packageJson = { + name: "trilium", + main: "main.cjs", + version, author, license, description, + dependencies: { + "better-sqlite3": dependencies["better-sqlite3"], + }, + devDependencies: { + electron: devDependencies.electron + } + }; + writeFileSync(join(build.outDir, "package.json"), JSON.stringify(packageJson, null, "\t"), "utf-8"); } main(); From edf53c8a0f8bd9921e8326d7b726cd2254e61050 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 21:16:10 +0300 Subject: [PATCH 42/85] chore(dx/desktop): configure dev & start-prod --- apps/desktop/package.json | 6 +++--- scripts/build-utils.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index e5cbdf01b..f59c4f0b6 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -3,7 +3,7 @@ "version": "0.98.1", "description": "Build your personal knowledge base with Trilium Notes", "private": true, - "main": "main.cjs", + "main": "src/main.ts", "dependencies": { "@electron/remote": "2.1.3", "better-sqlite3": "^12.0.0", @@ -32,9 +32,9 @@ "forge": "./electron-forge/forge.config.ts" }, "scripts": { - "dev": "cross-env NODE_OPTIONS=\"--import tsx\" NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=../server/src electron src/electron-main.ts", + "dev": "cross-env NODE_OPTIONS=\"--import tsx\" NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=../server/src electron .", "build": "tsx scripts/build.ts", - "start-prod": "nx build desktop && cross-env TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=dist TRILIUM_PORT=37841 electron dist/main.js" + "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist" }, "license": "AGPL-3.0-only", "author": { diff --git a/scripts/build-utils.ts b/scripts/build-utils.ts index e4706b03b..d8207d4ed 100644 --- a/scripts/build-utils.ts +++ b/scripts/build-utils.ts @@ -7,8 +7,8 @@ import { join } from "path"; export default class BuildHelper { private rootDir: string; - private projectDir: string; - private outDir: string; + projectDir: string; + outDir: string; constructor(projectPath: string) { this.rootDir = join(__dirname, ".."); From 6f29bdf35505d233e32b69226c9062d33c631dd3 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 22:25:06 +0300 Subject: [PATCH 43/85] chore(dx/electron): different window icon --- apps/server/src/services/window.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/server/src/services/window.ts b/apps/server/src/services/window.ts index eeb36f9d7..5420a5b43 100644 --- a/apps/server/src/services/window.ts +++ b/apps/server/src/services/window.ts @@ -257,7 +257,11 @@ async function configureWebContents(webContents: WebContents, spellcheckEnabled: } function getIcon() { - return path.join(RESOURCE_DIR, "../public/assets/icon.png"); + if (process.env.NODE_ENV === "development") { + return path.join(__dirname, "../../../desktop/electron-forge/app-icon/png/256x256-dev.png"); + } else { + return path.join(RESOURCE_DIR, "../public/assets/icon.png"); + } } async function createSetupWindow() { From 793102f3ad437a5d90bb18263e3e1d7a99b3e9eb Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 1 Sep 2025 22:55:53 +0300 Subject: [PATCH 44/85] chore(dx/electron): fix tray icons --- apps/server/src/services/tray.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/server/src/services/tray.ts b/apps/server/src/services/tray.ts index 0866439e3..504e81b21 100644 --- a/apps/server/src/services/tray.ts +++ b/apps/server/src/services/tray.ts @@ -29,12 +29,21 @@ function getTrayIconPath() { name = "icon-color"; } - return path.resolve(path.join(getResourceDir(), "assets", "images", "tray", `${name}.png`)); + if (process.env.NODE_ENV === "development") { + return path.join(__dirname, "../../../desktop/src/assets/images/tray", `${name}.png`); + } else { + return path.resolve(path.join(getResourceDir(), "assets", "images", "tray", `${name}.png`)); + } } function getIconPath(name: string) { const suffix = !isMac && electron.nativeTheme.shouldUseDarkColors ? "-inverted" : ""; - return path.resolve(path.join(getResourceDir(), "assets", "images", "tray", `${name}Template${suffix}.png`)); + + if (process.env.NODE_ENV === "development") { + return path.join(__dirname, "../../../desktop/src/assets/images/tray", `${name}Template${suffix}.png`); + } else { + return path.resolve(path.join(getResourceDir(), "assets", "images", "tray", `${name}Template${suffix}.png`)); + } } function registerVisibilityListener(window: BrowserWindow) { From ae74f8ea837d31f6d0a7ba644b1453098dc25e69 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 10:45:42 +0300 Subject: [PATCH 45/85] feat(dx/desktop): isolate node_modules dependency --- apps/desktop/.npmrc | 1 - apps/desktop/package.json | 5 +-- apps/desktop/scripts/rebuild.mts | 57 ++++++++++++++++++++++++++++++++ apps/desktop/scripts/start.mts | 22 ++++++++++++ pnpm-workspace.yaml | 3 +- scripts/utils.mts | 20 +++++++++++ 6 files changed, 103 insertions(+), 5 deletions(-) delete mode 100644 apps/desktop/.npmrc create mode 100644 apps/desktop/scripts/rebuild.mts create mode 100644 apps/desktop/scripts/start.mts create mode 100644 scripts/utils.mts diff --git a/apps/desktop/.npmrc b/apps/desktop/.npmrc deleted file mode 100644 index 1d6a0d53c..000000000 --- a/apps/desktop/.npmrc +++ /dev/null @@ -1 +0,0 @@ -node-linker = hoisted \ No newline at end of file diff --git a/apps/desktop/package.json b/apps/desktop/package.json index f59c4f0b6..1eb5233ad 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -32,9 +32,10 @@ "forge": "./electron-forge/forge.config.ts" }, "scripts": { - "dev": "cross-env NODE_OPTIONS=\"--import tsx\" NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=../server/src electron .", + "dev": "tsx scripts/start.mts", "build": "tsx scripts/build.ts", - "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist" + "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist", + "postinstall": "tsx scripts/rebuild.mts" }, "license": "AGPL-3.0-only", "author": { diff --git a/apps/desktop/scripts/rebuild.mts b/apps/desktop/scripts/rebuild.mts new file mode 100644 index 000000000..8f05c9db5 --- /dev/null +++ b/apps/desktop/scripts/rebuild.mts @@ -0,0 +1,57 @@ +import { join } from "path"; +import { cpSync, existsSync, mkdirSync, readFileSync, rmSync } from "fs"; +import { execSync } from "child_process"; +import { rebuild } from "@electron/rebuild" +import { isNixOS, resetPath } from "../../../scripts/utils.mjs"; + +const desktopProjectRoot = join(import.meta.dirname, ".."); +const workspaceRoot = join(desktopProjectRoot, "../.."); + +function copyNativeDependencies() { + const destPath = join(desktopProjectRoot, "node_modules/better-sqlite3"); + + if (existsSync(destPath)) { + rmSync(destPath, { recursive: true }); + } + mkdirSync(destPath); + cpSync(join(workspaceRoot, "node_modules/better-sqlite3"), destPath, { recursive: true, dereference: true }); +} + +function rebuildNativeDependencies() { + const electronVersion = determineElectronVersion(); + + if (!electronVersion) { + console.error("Unable to determine Electron version."); + process.exit(1); + } + + console.log(`Rebuilding ${desktopProjectRoot} with ${electronVersion}...`); + + rebuild({ + projectRootPath: desktopProjectRoot, + buildPath: desktopProjectRoot, + // on NixOS the prebuilt native fails with "Error: libstdc++.so.6: cannot open shared object file: No such file or directory" so we need to build from source. + force: isNixOS(), + electronVersion: electronVersion, + buildFromSource: true + }); +} + +function determineElectronVersion() { + if (isNixOS()) { + console.log("Detected NixOS, reading Electron version from PATH"); + resetPath(); + + try { + return execSync("electron --version", { }).toString("utf-8"); + } catch (e) { + console.error("Got error while trying to read the Electron version from shell. Make sure that an Electron version is in the PATH (e.g. `nix-shell -p electron`)"); + process.exit(1); + } + } else { + console.log("Using Electron version from package.json"); + } +} + +copyNativeDependencies(); +rebuildNativeDependencies(); diff --git a/apps/desktop/scripts/start.mts b/apps/desktop/scripts/start.mts new file mode 100644 index 000000000..192f36f4c --- /dev/null +++ b/apps/desktop/scripts/start.mts @@ -0,0 +1,22 @@ +import { execSync, spawnSync } from "child_process"; +import { isNixOS, resetPath } from "../../../scripts/utils.mjs"; +import { join } from "path"; + +const projectRoot = join(import.meta.dirname, ".."); + +if (isNixOS()) { + resetPath(); +} + +execSync("electron ./src/main.ts", { + stdio: "inherit", + cwd: projectRoot, + env: { + ...process.env, + NODE_OPTIONS: "--import tsx", + NODE_ENV: "development", + TRILIUM_ENV: "dev", + TRILIUM_DATA_DIR: "data", + TRILIUM_RESOURCE_DIR: "../server/src" + } +}); diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2c068ac8f..cf29be32e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,5 +2,4 @@ packages: - packages/* - apps/* -shamefullyHoist: true -nodeLinker: isolated +nodeLinker: hoisted diff --git a/scripts/utils.mts b/scripts/utils.mts new file mode 100644 index 000000000..d8cefe4c5 --- /dev/null +++ b/scripts/utils.mts @@ -0,0 +1,20 @@ +import { readFileSync } from "fs"; +import { platform } from "os"; + +export function isNixOS() { + if (platform() !== "linux") return false; + const osReleaseFile = readFileSync("/etc/os-release", "utf-8"); + return osReleaseFile.includes("ID=nixos"); +} + +export function resetPath() { + // On Unix-like systems, PATH is usually inherited from login shell + // but npm prepends node_modules/.bin. Let's remove it: + const origPath = process.env.PATH || ""; + + // npm usually adds something like ".../node_modules/.bin" + process.env.PATH = origPath + .split(":") + .filter(p => !p.includes("node_modules/.bin")) + .join(":"); +} From 16beeb2e8860a30aa4ac4d7d477a499d8cb33ce1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 11:03:24 +0300 Subject: [PATCH 46/85] fix(dx): broken imports after changing hoisting --- .../client/src/widgets/type_widgets/canvas.ts | 2 +- packages/highlightjs/src/themes.ts | 160 +++++++++--------- 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/canvas.ts b/apps/client/src/widgets/type_widgets/canvas.ts index 42314f055..343e2489c 100644 --- a/apps/client/src/widgets/type_widgets/canvas.ts +++ b/apps/client/src/widgets/type_widgets/canvas.ts @@ -388,7 +388,7 @@ async function setupFonts() { if (!glob.isDev) { path = `${window.location.pathname}/node_modules/@excalidraw/excalidraw/dist/prod`; } else { - path = (await import("../../../node_modules/@excalidraw/excalidraw/dist/prod/fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2?url")).default; + path = (await import("../../../../../node_modules/@excalidraw/excalidraw/dist/prod/fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2?url")).default; let pathComponents = path.split("/"); path = pathComponents.slice(0, pathComponents.length - 2).join("/"); } diff --git a/packages/highlightjs/src/themes.ts b/packages/highlightjs/src/themes.ts index 686467780..568ace5f5 100644 --- a/packages/highlightjs/src/themes.ts +++ b/packages/highlightjs/src/themes.ts @@ -6,323 +6,323 @@ export interface Theme { const themeDefinitions: Record = { "1c-light": { name: "1C (Light)", - load: () => import("../node_modules/highlight.js/styles/1c-light.css?raw") + load: () => import("highlight.js/styles/1c-light.css?raw") }, "a11y-dark": { name: "a11y (Dark)", - load: () => import("../node_modules/highlight.js/styles/a11y-dark.css?raw") + load: () => import("highlight.js/styles/a11y-dark.css?raw") }, "a11y-light": { name: "a11y (Light)", - load: () => import("../node_modules/highlight.js/styles/a11y-light.css?raw") + load: () => import("highlight.js/styles/a11y-light.css?raw") }, "agate": { name: "Agate (Dark)", - load: () => import("../node_modules/highlight.js/styles/agate.css?raw") + load: () => import("highlight.js/styles/agate.css?raw") }, "an-old-hope": { name: "An Old Hope (Dark)", - load: () => import("../node_modules/highlight.js/styles/an-old-hope.css?raw") + load: () => import("highlight.js/styles/an-old-hope.css?raw") }, "androidstudio": { name: "Android Studio (Dark)", - load: () => import("../node_modules/highlight.js/styles/androidstudio.css?raw") + load: () => import("highlight.js/styles/androidstudio.css?raw") }, "arduino-light": { name: "Arduino (Light)", - load: () => import("../node_modules/highlight.js/styles/arduino-light.css?raw") + load: () => import("highlight.js/styles/arduino-light.css?raw") }, "arta": { name: "Arta (Dark)", - load: () => import("../node_modules/highlight.js/styles/arta.css?raw") + load: () => import("highlight.js/styles/arta.css?raw") }, "ascetic": { name: "Ascetic (Light)", - load: () => import("../node_modules/highlight.js/styles/ascetic.css?raw") + load: () => import("highlight.js/styles/ascetic.css?raw") }, "atom-one-dark-reasonable": { name: "Atom One with ReasonML support (Dark)", - load: () => import("../node_modules/highlight.js/styles/atom-one-dark-reasonable.css?raw") + load: () => import("highlight.js/styles/atom-one-dark-reasonable.css?raw") }, "atom-one-dark": { name: "Atom One (Dark)", - load: () => import("../node_modules/highlight.js/styles/atom-one-dark.css?raw") + load: () => import("highlight.js/styles/atom-one-dark.css?raw") }, "atom-one-light": { name: "Atom One (Light)", - load: () => import("../node_modules/highlight.js/styles/atom-one-light.css?raw") + load: () => import("highlight.js/styles/atom-one-light.css?raw") }, "brown-paper": { name: "Brown Paper (Light)", - load: () => import("../node_modules/highlight.js/styles/brown-paper.css?raw") + load: () => import("highlight.js/styles/brown-paper.css?raw") }, "codepen-embed": { name: "CodePen Embed (Dark)", - load: () => import("../node_modules/highlight.js/styles/codepen-embed.css?raw") + load: () => import("highlight.js/styles/codepen-embed.css?raw") }, "color-brewer": { name: "Color Brewer (Light)", - load: () => import("../node_modules/highlight.js/styles/color-brewer.css?raw") + load: () => import("highlight.js/styles/color-brewer.css?raw") }, "cybertopia-cherry": { name: "Cybertopia Cherry (Dark)", - load: () => import("../node_modules/highlight.js/styles/cybertopia-cherry.css?raw") + load: () => import("highlight.js/styles/cybertopia-cherry.css?raw") }, "cybertopia-dimmer": { name: "Cybertopia Dimmer (Dark)", - load: () => import("../node_modules/highlight.js/styles/cybertopia-dimmer.css?raw") + load: () => import("highlight.js/styles/cybertopia-dimmer.css?raw") }, "cybertopia-icecap": { name: "Cybertopia Icecap (Dark)", - load: () => import("../node_modules/highlight.js/styles/cybertopia-icecap.css?raw") + load: () => import("highlight.js/styles/cybertopia-icecap.css?raw") }, "cybertopia-saturated": { name: "Cybertopia Saturated (Dark)", - load: () => import("../node_modules/highlight.js/styles/cybertopia-saturated.css?raw") + load: () => import("highlight.js/styles/cybertopia-saturated.css?raw") }, "dark": { name: "Dark", - load: () => import("../node_modules/highlight.js/styles/dark.css?raw") + load: () => import("highlight.js/styles/dark.css?raw") }, "default": { name: "Original highlight.js Theme (Light)", - load: () => import("../node_modules/highlight.js/styles/default.css?raw") + load: () => import("highlight.js/styles/default.css?raw") }, "devibeans": { name: "devibeans (Dark)", - load: () => import("../node_modules/highlight.js/styles/devibeans.css?raw") + load: () => import("highlight.js/styles/devibeans.css?raw") }, "docco": { name: "Docco (Light)", - load: () => import("../node_modules/highlight.js/styles/docco.css?raw") + load: () => import("highlight.js/styles/docco.css?raw") }, "far": { name: "FAR (Dark)", - load: () => import("../node_modules/highlight.js/styles/far.css?raw") + load: () => import("highlight.js/styles/far.css?raw") }, "felipec": { name: "FelipeC (Dark)", - load: () => import("../node_modules/highlight.js/styles/felipec.css?raw") + load: () => import("highlight.js/styles/felipec.css?raw") }, "foundation": { name: "Foundation 4 Docs (Light)", - load: () => import("../node_modules/highlight.js/styles/foundation.css?raw") + load: () => import("highlight.js/styles/foundation.css?raw") }, "github-dark-dimmed": { name: "GitHub Dimmed (Dark)", - load: () => import("../node_modules/highlight.js/styles/github-dark-dimmed.css?raw") + load: () => import("highlight.js/styles/github-dark-dimmed.css?raw") }, "github-dark": { name: "GitHub (Dark)", - load: () => import("../node_modules/highlight.js/styles/github-dark.css?raw") + load: () => import("highlight.js/styles/github-dark.css?raw") }, "github": { name: "GitHub (Light)", - load: () => import("../node_modules/highlight.js/styles/github.css?raw") + load: () => import("highlight.js/styles/github.css?raw") }, "gml": { name: "GML (Dark)", - load: () => import("../node_modules/highlight.js/styles/gml.css?raw") + load: () => import("highlight.js/styles/gml.css?raw") }, "googlecode": { name: "Google Code (Light)", - load: () => import("../node_modules/highlight.js/styles/googlecode.css?raw") + load: () => import("highlight.js/styles/googlecode.css?raw") }, "gradient-dark": { name: "Gradient (Dark)", - load: () => import("../node_modules/highlight.js/styles/gradient-dark.css?raw") + load: () => import("highlight.js/styles/gradient-dark.css?raw") }, "gradient-light": { name: "Gradient (Light)", - load: () => import("../node_modules/highlight.js/styles/gradient-light.css?raw") + load: () => import("highlight.js/styles/gradient-light.css?raw") }, "grayscale": { name: "Grayscale (Light)", - load: () => import("../node_modules/highlight.js/styles/grayscale.css?raw") + load: () => import("highlight.js/styles/grayscale.css?raw") }, "hybrid": { name: "hybrid (Dark)", - load: () => import("../node_modules/highlight.js/styles/hybrid.css?raw") + load: () => import("highlight.js/styles/hybrid.css?raw") }, "idea": { name: "Idea (Light)", - load: () => import("../node_modules/highlight.js/styles/idea.css?raw") + load: () => import("highlight.js/styles/idea.css?raw") }, "intellij-light": { name: "IntelliJ (Light)", - load: () => import("../node_modules/highlight.js/styles/intellij-light.css?raw") + load: () => import("highlight.js/styles/intellij-light.css?raw") }, "ir-black": { name: "IR Black (Dark)", - load: () => import("../node_modules/highlight.js/styles/ir-black.css?raw") + load: () => import("highlight.js/styles/ir-black.css?raw") }, "isbl-editor-dark": { name: "ISBL Editor (Dark)", - load: () => import("../node_modules/highlight.js/styles/isbl-editor-dark.css?raw") + load: () => import("highlight.js/styles/isbl-editor-dark.css?raw") }, "isbl-editor-light": { name: "ISBL Editor (Light)", - load: () => import("../node_modules/highlight.js/styles/isbl-editor-light.css?raw") + load: () => import("highlight.js/styles/isbl-editor-light.css?raw") }, "kimbie-dark": { name: "Kimbie (Dark)", - load: () => import("../node_modules/highlight.js/styles/kimbie-dark.css?raw") + load: () => import("highlight.js/styles/kimbie-dark.css?raw") }, "kimbie-light": { name: "Kimbie (Light)", - load: () => import("../node_modules/highlight.js/styles/kimbie-light.css?raw") + load: () => import("highlight.js/styles/kimbie-light.css?raw") }, "lightfair": { name: "Lightfair (Light)", - load: () => import("../node_modules/highlight.js/styles/lightfair.css?raw") + load: () => import("highlight.js/styles/lightfair.css?raw") }, "lioshi": { name: "Lioshi (Dark)", - load: () => import("../node_modules/highlight.js/styles/lioshi.css?raw") + load: () => import("highlight.js/styles/lioshi.css?raw") }, "magula": { name: "Magula (Light)", - load: () => import("../node_modules/highlight.js/styles/magula.css?raw") + load: () => import("highlight.js/styles/magula.css?raw") }, "mono-blue": { name: "Mono Blue (Light)", - load: () => import("../node_modules/highlight.js/styles/mono-blue.css?raw") + load: () => import("highlight.js/styles/mono-blue.css?raw") }, "monokai-sublime": { name: "Monokai Sublime (Dark)", - load: () => import("../node_modules/highlight.js/styles/monokai-sublime.css?raw") + load: () => import("highlight.js/styles/monokai-sublime.css?raw") }, "monokai": { name: "Monokai (Dark)", - load: () => import("../node_modules/highlight.js/styles/monokai.css?raw") + load: () => import("highlight.js/styles/monokai.css?raw") }, "night-owl": { name: "Night Owl (Dark)", - load: () => import("../node_modules/highlight.js/styles/night-owl.css?raw") + load: () => import("highlight.js/styles/night-owl.css?raw") }, "nnfx-dark": { name: "NNFX (Dark)", - load: () => import("../node_modules/highlight.js/styles/nnfx-dark.css?raw") + load: () => import("highlight.js/styles/nnfx-dark.css?raw") }, "nnfx-light": { name: "NNFX (Light)", - load: () => import("../node_modules/highlight.js/styles/nnfx-light.css?raw") + load: () => import("highlight.js/styles/nnfx-light.css?raw") }, "nord": { name: "Nord (Dark)", - load: () => import("../node_modules/highlight.js/styles/nord.css?raw") + load: () => import("highlight.js/styles/nord.css?raw") }, "obsidian": { name: "Obsidian (Dark)", - load: () => import("../node_modules/highlight.js/styles/obsidian.css?raw") + load: () => import("highlight.js/styles/obsidian.css?raw") }, "panda-syntax-dark": { name: "Panda (Dark)", - load: () => import("../node_modules/highlight.js/styles/panda-syntax-dark.css?raw") + load: () => import("highlight.js/styles/panda-syntax-dark.css?raw") }, "panda-syntax-light": { name: "Panda (Light)", - load: () => import("../node_modules/highlight.js/styles/panda-syntax-light.css?raw") + load: () => import("highlight.js/styles/panda-syntax-light.css?raw") }, "paraiso-dark": { name: "Paraiso (Dark)", - load: () => import("../node_modules/highlight.js/styles/paraiso-dark.css?raw") + load: () => import("highlight.js/styles/paraiso-dark.css?raw") }, "paraiso-light": { name: "Paraiso (Light)", - load: () => import("../node_modules/highlight.js/styles/paraiso-light.css?raw") + load: () => import("highlight.js/styles/paraiso-light.css?raw") }, "pojoaque": { name: "Pojoaque (Dark)", - load: () => import("../node_modules/highlight.js/styles/pojoaque.css?raw") + load: () => import("highlight.js/styles/pojoaque.css?raw") }, "purebasic": { name: "PureBasic (Light)", - load: () => import("../node_modules/highlight.js/styles/purebasic.css?raw") + load: () => import("highlight.js/styles/purebasic.css?raw") }, "qtcreator-dark": { name: "Qt Creator (Dark)", - load: () => import("../node_modules/highlight.js/styles/qtcreator-dark.css?raw") + load: () => import("highlight.js/styles/qtcreator-dark.css?raw") }, "qtcreator-light": { name: "Qt Creator (Light)", - load: () => import("../node_modules/highlight.js/styles/qtcreator-light.css?raw") + load: () => import("highlight.js/styles/qtcreator-light.css?raw") }, "rainbow": { name: "Rainbow (Dark)", - load: () => import("../node_modules/highlight.js/styles/rainbow.css?raw") + load: () => import("highlight.js/styles/rainbow.css?raw") }, "routeros": { name: "RouterOS Script (Light)", - load: () => import("../node_modules/highlight.js/styles/routeros.css?raw") + load: () => import("highlight.js/styles/routeros.css?raw") }, "rose-pine-dawn": { name: "Rose Pine Dawn (Light)", - load: () => import("../node_modules/highlight.js/styles/rose-pine-dawn.css?raw") + load: () => import("highlight.js/styles/rose-pine-dawn.css?raw") }, "rose-pine-moon": { name: "Rose Pine Moon (Dark)", - load: () => import("../node_modules/highlight.js/styles/rose-pine-moon.css?raw") + load: () => import("highlight.js/styles/rose-pine-moon.css?raw") }, "rose-pine": { name: "Rose Pine (Dark)", - load: () => import("../node_modules/highlight.js/styles/rose-pine.css?raw") + load: () => import("highlight.js/styles/rose-pine.css?raw") }, "school-book": { name: "School Book (Light)", - load: () => import("../node_modules/highlight.js/styles/school-book.css?raw") + load: () => import("highlight.js/styles/school-book.css?raw") }, "shades-of-purple": { name: "Shades of Purple (Dark)", - load: () => import("../node_modules/highlight.js/styles/shades-of-purple.css?raw") + load: () => import("highlight.js/styles/shades-of-purple.css?raw") }, "srcery": { name: "Srcery (Dark)", - load: () => import("../node_modules/highlight.js/styles/srcery.css?raw") + load: () => import("highlight.js/styles/srcery.css?raw") }, "stackoverflow-dark": { name: "Stack Overflow (Dark)", - load: () => import("../node_modules/highlight.js/styles/stackoverflow-dark.css?raw") + load: () => import("highlight.js/styles/stackoverflow-dark.css?raw") }, "stackoverflow-light": { name: "Stack Overflow (Light)", - load: () => import("../node_modules/highlight.js/styles/stackoverflow-light.css?raw") + load: () => import("highlight.js/styles/stackoverflow-light.css?raw") }, "sunburst": { name: "Sunburst (Dark)", - load: () => import("../node_modules/highlight.js/styles/sunburst.css?raw") + load: () => import("highlight.js/styles/sunburst.css?raw") }, "tokyo-night-dark": { name: "Tokyo Night (Dark)", - load: () => import("../node_modules/highlight.js/styles/tokyo-night-dark.css?raw") + load: () => import("highlight.js/styles/tokyo-night-dark.css?raw") }, "tokyo-night-light": { name: "Tokyo Night (Light)", - load: () => import("../node_modules/highlight.js/styles/tokyo-night-light.css?raw") + load: () => import("highlight.js/styles/tokyo-night-light.css?raw") }, "tomorrow-night-blue": { name: "Tomorrow Night Blue (Dark)", - load: () => import("../node_modules/highlight.js/styles/tomorrow-night-blue.css?raw") + load: () => import("highlight.js/styles/tomorrow-night-blue.css?raw") }, "tomorrow-night-bright": { name: "Tomorrow Night Bright (Dark)", - load: () => import("../node_modules/highlight.js/styles/tomorrow-night-bright.css?raw") + load: () => import("highlight.js/styles/tomorrow-night-bright.css?raw") }, "vs": { name: "Visual Studio (Light)", - load: () => import("../node_modules/highlight.js/styles/vs.css?raw") + load: () => import("highlight.js/styles/vs.css?raw") }, "vs2015": { name: "Visual Studio 2015 (Dark)", - load: () => import("../node_modules/highlight.js/styles/vs2015.css?raw") + load: () => import("highlight.js/styles/vs2015.css?raw") }, "xcode": { name: "Xcode (Light)", - load: () => import("../node_modules/highlight.js/styles/xcode.css?raw") + load: () => import("highlight.js/styles/xcode.css?raw") }, "xt256": { name: "xt256 (Dark)", - load: () => import("../node_modules/highlight.js/styles/xt256.css?raw") + load: () => import("highlight.js/styles/xt256.css?raw") } } From 7fdea613ff932e06f79df86b49d1e9c78f0ab675 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 11:50:53 +0300 Subject: [PATCH 47/85] feat(dx/desktop): perfect way to override bettersqlite native --- apps/desktop/scripts/rebuild.mts | 7 ++----- apps/desktop/scripts/start.mts | 3 ++- apps/server/src/services/sql.ts | 13 ++++++++++--- apps/server/src/share/sql.ts | 5 ++++- package.json | 1 + 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/apps/desktop/scripts/rebuild.mts b/apps/desktop/scripts/rebuild.mts index 8f05c9db5..a37c72075 100644 --- a/apps/desktop/scripts/rebuild.mts +++ b/apps/desktop/scripts/rebuild.mts @@ -9,7 +9,7 @@ const workspaceRoot = join(desktopProjectRoot, "../.."); function copyNativeDependencies() { const destPath = join(desktopProjectRoot, "node_modules/better-sqlite3"); - + if (existsSync(destPath)) { rmSync(destPath, { recursive: true }); } @@ -30,10 +30,7 @@ function rebuildNativeDependencies() { rebuild({ projectRootPath: desktopProjectRoot, buildPath: desktopProjectRoot, - // on NixOS the prebuilt native fails with "Error: libstdc++.so.6: cannot open shared object file: No such file or directory" so we need to build from source. - force: isNixOS(), - electronVersion: electronVersion, - buildFromSource: true + electronVersion }); } diff --git a/apps/desktop/scripts/start.mts b/apps/desktop/scripts/start.mts index 192f36f4c..df956fc48 100644 --- a/apps/desktop/scripts/start.mts +++ b/apps/desktop/scripts/start.mts @@ -17,6 +17,7 @@ execSync("electron ./src/main.ts", { NODE_ENV: "development", TRILIUM_ENV: "dev", TRILIUM_DATA_DIR: "data", - TRILIUM_RESOURCE_DIR: "../server/src" + TRILIUM_RESOURCE_DIR: "../server/src", + BETTERSQLITE3_NATIVE_PATH: join(projectRoot, "node_modules/better-sqlite3/build/Release/better_sqlite3.node") } }); diff --git a/apps/server/src/services/sql.ts b/apps/server/src/services/sql.ts index 15f5af389..206a828d6 100644 --- a/apps/server/src/services/sql.ts +++ b/apps/server/src/services/sql.ts @@ -15,6 +15,10 @@ import becca_loader from "../becca/becca_loader.js"; import entity_changes from "./entity_changes.js"; import config from "./config.js"; +const dbOpts: Database.Options = { + nativeBinding: process.env.BETTERSQLITE3_NATIVE_PATH || undefined +}; + let dbConnection: DatabaseType = buildDatabase(); let statementCache: Record = {}; @@ -23,15 +27,18 @@ function buildDatabase() { if (process.env.TRILIUM_INTEGRATION_TEST === "memory") { return buildIntegrationTestDatabase(); } else if (process.env.TRILIUM_INTEGRATION_TEST === "memory-no-store") { - return new Database(":memory:"); + return new Database(":memory:", dbOpts); } - return new Database(dataDir.DOCUMENT_PATH, { readonly: config.General.readOnly }); + return new Database(dataDir.DOCUMENT_PATH, { + ...dbOpts, + readonly: config.General.readOnly + }); } function buildIntegrationTestDatabase(dbPath?: string) { const dbBuffer = fs.readFileSync(dbPath ?? dataDir.DOCUMENT_PATH); - return new Database(dbBuffer); + return new Database(dbBuffer, dbOpts); } function rebuildIntegrationTestDatabase(dbPath?: string) { diff --git a/apps/server/src/share/sql.ts b/apps/server/src/share/sql.ts index 229e09ec7..36cca4b5e 100644 --- a/apps/server/src/share/sql.ts +++ b/apps/server/src/share/sql.ts @@ -7,7 +7,10 @@ import sql_init from "../services/sql_init.js"; let dbConnection!: Database.Database; sql_init.dbReady.then(() => { - dbConnection = new Database(dataDir.DOCUMENT_PATH, { readonly: true }); + dbConnection = new Database(dataDir.DOCUMENT_PATH, { + readonly: true, + nativeBinding: process.env.BETTERSQLITE3_NATIVE_PATH || undefined + }); [`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `SIGTERM`].forEach((eventType) => { process.on(eventType, () => { diff --git a/package.json b/package.json index d7bfb82fc..c7c746135 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "server:coverage": "nx test server --coverage", "server:start": "pnpm run --filter server dev", "server:start-prod": "nx run server:start-prod", + "desktop:start": "pnpm run --filter desktop dev", "electron:build": "nx build desktop", "chore:ci-update-nightly-version": "tsx ./scripts/update-nightly-version.ts", "chore:generate-openapi": "tsx ./scripts/generate-openapi.ts", From bd349f5abc69ec1b53b82aac14b7534c76e089f9 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 12:18:22 +0300 Subject: [PATCH 48/85] feat(dx/desktop): support raw NixOS via LD_LIBRARY_PATH injection --- apps/desktop/scripts/rebuild.mts | 11 +++++++++++ apps/desktop/scripts/start.mts | 9 +++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/desktop/scripts/rebuild.mts b/apps/desktop/scripts/rebuild.mts index a37c72075..f367c3cde 100644 --- a/apps/desktop/scripts/rebuild.mts +++ b/apps/desktop/scripts/rebuild.mts @@ -32,6 +32,17 @@ function rebuildNativeDependencies() { buildPath: desktopProjectRoot, electronVersion }); + + if (isNixOS()) { + console.log("Patching ELF..."); + + + + return execSync(`nix-shell -p auto-patchelf gcc.cc.lib --run "auto-patchelf --paths node_modules/better-sqlite3/build/Release/better_sqlite3.node --libs ${libStdPath}"`, { + cwd: desktopProjectRoot, + stdio: "inherit" + }); + } } function determineElectronVersion() { diff --git a/apps/desktop/scripts/start.mts b/apps/desktop/scripts/start.mts index df956fc48..17245205c 100644 --- a/apps/desktop/scripts/start.mts +++ b/apps/desktop/scripts/start.mts @@ -4,11 +4,15 @@ import { join } from "path"; const projectRoot = join(import.meta.dirname, ".."); +let LD_LIBRARY_PATH = undefined; +let electronPath = "electron"; if (isNixOS()) { resetPath(); + LD_LIBRARY_PATH = execSync("nix eval --raw nixpkgs#gcc.cc.lib").toString("utf-8") + "/lib"; + electronPath = execSync("nix eval --raw nixpkgs#electron_37").toString("utf-8") + "/bin/electron"; } -execSync("electron ./src/main.ts", { +execSync(`${electronPath} ./src/main.ts`, { stdio: "inherit", cwd: projectRoot, env: { @@ -18,6 +22,7 @@ execSync("electron ./src/main.ts", { TRILIUM_ENV: "dev", TRILIUM_DATA_DIR: "data", TRILIUM_RESOURCE_DIR: "../server/src", - BETTERSQLITE3_NATIVE_PATH: join(projectRoot, "node_modules/better-sqlite3/build/Release/better_sqlite3.node") + BETTERSQLITE3_NATIVE_PATH: join(projectRoot, "node_modules/better-sqlite3/build/Release/better_sqlite3.node"), + LD_LIBRARY_PATH } }); From ce0fd3cec242505a3bbb4165517ff045d5614847 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 13:59:09 +0300 Subject: [PATCH 49/85] chore(dx/desktop): get forge to run --- apps/client/vite.config.mts | 2 +- apps/desktop/package.json | 30 +++---------- apps/desktop/scripts/build.ts | 5 ++- pnpm-lock.yaml | 83 +++++++++++++++++++++++++++++------ scripts/build-utils.ts | 24 ++++++++-- 5 files changed, 100 insertions(+), 44 deletions(-) diff --git a/apps/client/vite.config.mts b/apps/client/vite.config.mts index a07d6120f..04a5b0911 100644 --- a/apps/client/vite.config.mts +++ b/apps/client/vite.config.mts @@ -29,7 +29,7 @@ if (!isDev) { structured: true, targets: [ { - src: "node_modules/@excalidraw/excalidraw/dist/prod/fonts/*", + src: "../../node_modules/@excalidraw/excalidraw/dist/prod/fonts/*", dest: "", } ] diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 1eb5233ad..036745fe2 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -15,6 +15,7 @@ }, "devDependencies": { "@types/electron-squirrel-startup": "1.0.2", + "@triliumnext/commons": "workspace:*", "@triliumnext/server": "workspace:*", "copy-webpack-plugin": "13.0.1", "electron": "37.4.0", @@ -27,14 +28,14 @@ "@electron-forge/maker-zip": "7.8.3", "@electron-forge/plugin-auto-unpack-natives": "7.8.3", "prebuild-install": "^7.1.1" - }, - "config": { - "forge": "./electron-forge/forge.config.ts" - }, + }, "scripts": { "dev": "tsx scripts/start.mts", "build": "tsx scripts/build.ts", "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist", + "electron-forge:make": "pnpm build && electron-forge make dist", + "electron-forge:package": "pnpm build && electron-forge package dist", + "electron-forge:start": "pnpm build && electron-forge start dist", "postinstall": "tsx scripts/rebuild.mts" }, "license": "AGPL-3.0-only", @@ -133,27 +134,6 @@ "forwardAllArgs": false } } - }, - "electron-forge:make": { - "dependsOn": [ - "build", - "rebuild-deps" - ], - "command": "pnpm -C apps/desktop exec cross-env NODE_INSTALLER=npm electron-forge make dist" - }, - "electron-forge:package": { - "dependsOn": [ - "build", - "rebuild-deps" - ], - "command": "pnpm -C apps/desktop exec cross-env NODE_INSTALLER=npm electron-forge package dist" - }, - "electron-forge:start": { - "dependsOn": [ - "build", - "rebuild-deps" - ], - "command": "pnpm -C apps/desktop exec cross-env NODE_INSTALLER=npm TRILIUM_DATA_DIR=./data electron-forge start dist" } } } diff --git a/apps/desktop/scripts/build.ts b/apps/desktop/scripts/build.ts index 1b42b4eab..c0c7bdb73 100644 --- a/apps/desktop/scripts/build.ts +++ b/apps/desktop/scripts/build.ts @@ -15,7 +15,7 @@ async function main() { // Copy node modules dependencies build.copyNodeModules([ "better-sqlite3", "bindings", "file-uri-to-path", "@electron/remote" ]); - build.copy("/apps/server/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); + build.copy("/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); // Integrate the client. build.triggerBuildAndCopyTo("apps/client", "public/"); @@ -35,6 +35,9 @@ function generatePackageJson() { }, devDependencies: { electron: devDependencies.electron + }, + config: { + forge: "../electron-forge/forge.config.ts" } }; writeFileSync(join(build.outDir, "package.json"), JSON.stringify(packageJson, null, "\t"), "utf-8"); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2cba94d0..46c12a288 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -368,6 +368,9 @@ importers: '@electron-forge/plugin-auto-unpack-natives': specifier: 7.8.3 version: 7.8.3 + '@triliumnext/commons': + specifier: workspace:* + version: link:../../packages/commons '@triliumnext/server': specifier: workspace:* version: link:../server @@ -14578,8 +14581,6 @@ snapshots: '@ckeditor/ckeditor5-core': 46.0.2 '@ckeditor/ckeditor5-upload': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-ai@46.0.2': dependencies: @@ -14704,16 +14705,12 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-cloud-services@46.0.2': dependencies: '@ckeditor/ckeditor5-core': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-code-block@46.0.2(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -14725,6 +14722,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-collaboration-core@46.0.2': dependencies: @@ -14738,6 +14737,8 @@ snapshots: '@types/luxon': 3.6.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) luxon: 3.6.1 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-comments@46.0.2': dependencies: @@ -14759,6 +14760,8 @@ snapshots: ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) ckeditor5-collaboration: 46.0.2 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-core@46.0.2': dependencies: @@ -14767,8 +14770,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-watchdog': 46.0.2 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-dev-build-tools@43.1.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.2)': dependencies: @@ -14933,8 +14934,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-classic@46.0.2': dependencies: @@ -14944,8 +14943,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-decoupled@46.0.2': dependencies: @@ -14955,8 +14952,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-inline@46.0.2': dependencies: @@ -14990,6 +14985,8 @@ snapshots: '@ckeditor/ckeditor5-table': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-emoji@46.0.2': dependencies: @@ -15002,6 +14999,8 @@ snapshots: ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 fuzzysort: 3.1.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-engine@46.0.2': dependencies: @@ -15044,6 +15043,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-export-word@46.0.2': dependencies: @@ -15057,6 +15058,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-find-and-replace@46.0.2': dependencies: @@ -15075,6 +15078,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-format-painter@46.0.2': dependencies: @@ -15094,6 +15099,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-heading@46.0.2': dependencies: @@ -15104,6 +15111,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-highlight@46.0.2': dependencies: @@ -15112,6 +15121,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-horizontal-line@46.0.2': dependencies: @@ -15130,6 +15141,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-html-support@46.0.2': dependencies: @@ -15145,6 +15158,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-icons@46.0.2': {} @@ -15162,6 +15177,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-import-word@46.0.2': dependencies: @@ -15174,6 +15191,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-indent@46.0.2': dependencies: @@ -15185,6 +15204,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -15194,6 +15215,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-line-height@46.0.2': dependencies: @@ -15217,6 +15240,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-list-multi-level@46.0.2': dependencies: @@ -15240,6 +15265,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-markdown-gfm@46.0.2': dependencies: @@ -15277,6 +15304,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-mention@46.0.2(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -15286,6 +15315,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-merge-fields@46.0.2': dependencies: @@ -15298,6 +15329,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-minimap@46.0.2': dependencies: @@ -15306,6 +15339,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-operations-compressor@46.0.2': dependencies: @@ -15358,6 +15393,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-pagination@46.0.2': dependencies: @@ -15464,6 +15501,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-slash-command@46.0.2': dependencies: @@ -15476,6 +15515,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-source-editing-enhanced@46.0.2': dependencies: @@ -15502,6 +15543,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-special-characters@46.0.2': dependencies: @@ -15523,6 +15566,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-table@46.0.2': dependencies: @@ -15535,6 +15580,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-template@46.0.2': dependencies: @@ -15577,6 +15624,8 @@ snapshots: ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) ckeditor5-collaboration: 46.0.2 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-typing@46.0.2': dependencies: @@ -15643,6 +15692,8 @@ snapshots: '@ckeditor/ckeditor5-engine': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-widget@46.0.2': dependencies: @@ -15662,6 +15713,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@codemirror/autocomplete@6.18.6': dependencies: @@ -20653,6 +20706,8 @@ snapshots: ckeditor5-collaboration@46.0.2: dependencies: '@ckeditor/ckeditor5-collaboration-core': 46.0.2 + transitivePeerDependencies: + - supports-color ckeditor5-premium-features@46.0.2(bufferutil@4.0.9)(ckeditor5@46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41))(utf-8-validate@6.0.5): dependencies: diff --git a/scripts/build-utils.ts b/scripts/build-utils.ts index d8207d4ed..8da5be9d1 100644 --- a/scripts/build-utils.ts +++ b/scripts/build-utils.ts @@ -1,6 +1,6 @@ import { execSync } from "child_process"; import { build as esbuild } from "esbuild"; -import { rmSync } from "fs"; +import { cpSync, existsSync, rmSync } from "fs"; import { copySync, emptyDirSync, mkdirpSync } from "fs-extra"; import { join } from "path"; @@ -73,9 +73,27 @@ export default class BuildHelper { } copyNodeModules(nodeModules: string[]) { - for (const module of nodeModules) { - this.copy(`node_modules/${module}`, `node_modules/${module}/`); + for (const moduleName of nodeModules) { + const sourceDir = tryPath([ + join(this.projectDir, "node_modules", moduleName), + join(this.rootDir, "node_modules", moduleName) + ]); + + const destDir = join(this.outDir, "node_modules", moduleName); + mkdirpSync(destDir); + cpSync(sourceDir, destDir, { recursive: true, dereference: true }); } } } + +function tryPath(paths: string[]) { + for (const path of paths) { + if (existsSync(path)) { + return path; + } + } + + console.error("Unable to find any of the paths:", paths); + process.exit(1); +} From e18a8556c129476349f7b3aede7ecf901f759bb0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 16:40:52 +0300 Subject: [PATCH 50/85] chore(dx/ci): remove most references to NX, apart from unit test --- .github/actions/build-electron/action.yml | 2 +- .github/actions/build-server/action.yml | 2 +- .github/workflows/dev.yml | 32 +++-------------------- .github/workflows/nightly.yml | 1 - .github/workflows/release.yml | 1 - apps/server/package.json | 9 ++----- apps/server/scripts/build.ts | 2 +- 7 files changed, 8 insertions(+), 41 deletions(-) diff --git a/.github/actions/build-electron/action.yml b/.github/actions/build-electron/action.yml index add8f3156..540b7ddcb 100644 --- a/.github/actions/build-electron/action.yml +++ b/.github/actions/build-electron/action.yml @@ -86,7 +86,7 @@ runs: APPLE_ID_PASSWORD: ${{ env.APPLE_ID_PASSWORD }} WINDOWS_SIGN_EXECUTABLE: ${{ env.WINDOWS_SIGN_EXECUTABLE }} TRILIUM_ARTIFACT_NAME_HINT: TriliumNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }} - run: pnpm nx --project=desktop electron-forge:make -- --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }} + run: pnpm run --filter desktop electron-forge:make -- --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }} # Add DMG signing step - name: Sign DMG diff --git a/.github/actions/build-server/action.yml b/.github/actions/build-server/action.yml index b0ab05212..c5935172d 100644 --- a/.github/actions/build-server/action.yml +++ b/.github/actions/build-server/action.yml @@ -23,7 +23,7 @@ runs: shell: bash run: | pnpm run chore:update-build-info - pnpm nx --project=server package + pnpm server:package - name: Prepare artifacts shell: bash run: | diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 443f2aa35..c4789cb2c 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -19,33 +19,9 @@ permissions: pull-requests: write # for PR comments jobs: - check-affected: - name: Check affected jobs (NX) - runs-on: ubuntu-latest - steps: - - name: Checkout the repository - uses: actions/checkout@v5 - with: - fetch-depth: 0 # needed for https://github.com/marketplace/actions/nx-set-shas - - - uses: pnpm/action-setup@v4 - - name: Set up node & dependencies - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: 'pnpm' - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - uses: nrwl/nx-set-shas@v4 - - name: Check affected - run: pnpm nx affected --verbose -t typecheck build rebuild-deps test-build - test_dev: name: Test development runs-on: ubuntu-latest - needs: - - check-affected steps: - name: Checkout the repository uses: actions/checkout@v5 @@ -66,7 +42,6 @@ jobs: runs-on: ubuntu-latest needs: - test_dev - - check-affected steps: - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 @@ -75,7 +50,7 @@ jobs: - name: Update build info run: pnpm run chore:update-build-info - name: Trigger client build - run: pnpm nx run client:build + run: pnpm client:build - name: Send client bundle stats to RelativeCI if: false uses: relative-ci/agent-action@v3 @@ -83,7 +58,7 @@ jobs: webpackStatsFile: ./apps/client/dist/webpack-stats.json key: ${{ secrets.RELATIVE_CI_CLIENT_KEY }} - name: Trigger server build - run: pnpm nx run server:build + run: pnpm run server:build - uses: docker/setup-buildx-action@v3 - uses: docker/build-push-action@v6 with: @@ -95,7 +70,6 @@ jobs: runs-on: ubuntu-latest needs: - build_docker - - check-affected strategy: matrix: include: @@ -112,7 +86,7 @@ jobs: - name: Update build info run: pnpm run chore:update-build-info - name: Trigger build - run: pnpm nx run server:build + run: pnpm server:build - name: Set IMAGE_NAME to lowercase run: echo "IMAGE_NAME=${IMAGE_NAME,,}" >> $GITHUB_ENV diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index f20c5a2d4..d9edb2cc2 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -57,7 +57,6 @@ jobs: cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - - uses: nrwl/nx-set-shas@v4 - name: Update nightly version run: npm run chore:ci-update-nightly-version - name: Run the build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 20161630f..133d40622 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,7 +41,6 @@ jobs: cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - - uses: nrwl/nx-set-shas@v4 - name: Run the build uses: ./.github/actions/build-electron with: diff --git a/apps/server/package.json b/apps/server/package.json index bff80d21c..6ade52f89 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -169,12 +169,6 @@ "runBuildTargetDependencies": false } }, - "package": { - "dependsOn": [ - "build" - ], - "command": "bash apps/server/scripts/build-server.sh" - }, "start-prod": { "dependsOn": [ "build" @@ -320,7 +314,8 @@ }, "scripts": { "dev": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", - "build": "tsx scripts/build.ts" + "build": "tsx scripts/build.ts", + "package": "pnpm build && bash scripts/build-server.sh" }, "main": "./src/main.ts" } \ No newline at end of file diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 5606644f5..8d62921ac 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -11,7 +11,7 @@ async function main() { // Copy node modules dependencies build.copyNodeModules([ "better-sqlite3", "bindings", "file-uri-to-path" ]); - build.copy("node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); + build.copy("/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); // Integrate the client. build.triggerBuildAndCopyTo("apps/client", "public/"); From 1258d0cf7db31f47ffdd3b48e598f5ab8243ea86 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 17:37:57 +0300 Subject: [PATCH 51/85] chore(dx/desktop): read electron version from package.json --- apps/desktop/scripts/rebuild.mts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/desktop/scripts/rebuild.mts b/apps/desktop/scripts/rebuild.mts index f367c3cde..25b341ada 100644 --- a/apps/desktop/scripts/rebuild.mts +++ b/apps/desktop/scripts/rebuild.mts @@ -3,6 +3,7 @@ import { cpSync, existsSync, mkdirSync, readFileSync, rmSync } from "fs"; import { execSync } from "child_process"; import { rebuild } from "@electron/rebuild" import { isNixOS, resetPath } from "../../../scripts/utils.mjs"; +import packageJson from "../package.json" with { type: "json" }; const desktopProjectRoot = join(import.meta.dirname, ".."); const workspaceRoot = join(desktopProjectRoot, "../.."); @@ -36,8 +37,6 @@ function rebuildNativeDependencies() { if (isNixOS()) { console.log("Patching ELF..."); - - return execSync(`nix-shell -p auto-patchelf gcc.cc.lib --run "auto-patchelf --paths node_modules/better-sqlite3/build/Release/better_sqlite3.node --libs ${libStdPath}"`, { cwd: desktopProjectRoot, stdio: "inherit" @@ -58,6 +57,7 @@ function determineElectronVersion() { } } else { console.log("Using Electron version from package.json"); + return packageJson.devDependencies.electron; } } From 7c8019ac5be2f4f3347e193e0b1429d61a4e2d12 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 17:38:24 +0300 Subject: [PATCH 52/85] chore(dx/ci): get rid of nx-specific workflows --- .github/workflows/main-docker.yml | 2 +- .github/workflows/playwright.yml | 13 +------------ apps/client/package.json | 21 +++++---------------- apps/server-e2e/package.json | 15 ++------------- apps/server/package.json | 26 ++++++++++---------------- 5 files changed, 19 insertions(+), 58 deletions(-) diff --git a/.github/workflows/main-docker.yml b/.github/workflows/main-docker.yml index c4c6ed551..7b2ee4ecd 100644 --- a/.github/workflows/main-docker.yml +++ b/.github/workflows/main-docker.yml @@ -82,7 +82,7 @@ jobs: require-healthy: true - name: Run Playwright tests - run: TRILIUM_DOCKER=1 TRILIUM_PORT=8082 pnpm exec nx run server-e2e:e2e + run: TRILIUM_DOCKER=1 TRILIUM_PORT=8082 pnpm --filter=server-e2e e2e - name: Upload Playwright trace if: failure() diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index 25086af64..b4f047aea 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -19,12 +19,6 @@ jobs: filter: tree:0 fetch-depth: 0 - # This enables task distribution via Nx Cloud - # Run this command as early as possible, before dependencies are installed - # Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun - # Connect your workspace by running "nx connect" and uncomment this line to enable task distribution - # - run: npx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="e2e-ci" - - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: @@ -34,10 +28,5 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - run: pnpm exec playwright install --with-deps - - uses: nrwl/nx-set-shas@v4 - # Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud - # - run: npx nx-cloud record -- echo Hello World - # Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected - # When you enable task distribution, run the e2e-ci task instead of e2e - - run: pnpm exec nx affected -t e2e --exclude desktop-e2e + - run: pnpm -r e2e diff --git a/apps/client/package.json b/apps/client/package.json index 381b091bc..9a979ccdb 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -9,6 +9,11 @@ "email": "contact@eliandoran.me", "url": "https://github.com/TriliumNext/Notes" }, + "scripts": { + "build": "vite build", + "test": "vitest", + "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" + }, "dependencies": { "@eslint/js": "9.34.0", "@excalidraw/excalidraw": "0.18.0", @@ -71,21 +76,5 @@ "happy-dom": "18.0.1", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.1.2" - }, - "scripts": { - "build": "vite build" - }, - "nx": { - "name": "client", - "targets": { - "serve": { - "dependsOn": [ - "^build" - ] - }, - "circular-deps": { - "command": "pnpx dpdm -T {projectRoot}/src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" - } - } } } \ No newline at end of file diff --git a/apps/server-e2e/package.json b/apps/server-e2e/package.json index a9970fd0a..0844eb347 100644 --- a/apps/server-e2e/package.json +++ b/apps/server-e2e/package.json @@ -2,19 +2,8 @@ "name": "@triliumnext/server-e2e", "version": "0.0.1", "private": true, - "nx": { - "name": "server-e2e", - "implicitDependencies": [ - "client", - "server" - ], - "targets": { - "e2e": { - "dependsOn": [ - "server:build" - ] - } - } + "scripts": { + "e2e": "playwright test" }, "devDependencies": { "dotenv": "17.2.1" diff --git a/apps/server/package.json b/apps/server/package.json index 6ade52f89..6ad5f1a60 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -3,6 +3,15 @@ "version": "0.98.1", "description": "The server-side component of TriliumNext, which exposes the client via the web, allows for sync and provides a REST API for both internal and external use.", "private": true, + "main": "./src/main.ts", + "scripts": { + "dev": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", + "build": "tsx scripts/build.ts", + "package": "pnpm build && bash scripts/build-server.sh", + "test": "vitest", + "test-build": "vitest --config vitest.build.config.mts", + "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" + }, "dependencies": { "better-sqlite3": "12.2.0" }, @@ -300,22 +309,7 @@ } ] } - }, - "test-build": { - "dependsOn": [ - "build" - ], - "command": "vitest --config {projectRoot}/vitest.build.config.mts" - }, - "circular-deps": { - "command": "pnpx dpdm -T {projectRoot}/src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" } } - }, - "scripts": { - "dev": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", - "build": "tsx scripts/build.ts", - "package": "pnpm build && bash scripts/build-server.sh" - }, - "main": "./src/main.ts" + } } \ No newline at end of file From d60899e3622fcc38a3524ba31e51e4c9652077be Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 17:43:32 +0300 Subject: [PATCH 53/85] chore(dx): remove unnecessary nx configs --- apps/desktop-e2e/package.json | 21 +---- apps/website/package.json | 9 -- nx.json | 94 ------------------- packages/ckeditor5-admonition/package.json | 8 -- packages/ckeditor5-footnotes/package.json | 8 -- .../ckeditor5-keyboard-marker/package.json | 8 -- packages/ckeditor5-math/package.json | 8 -- packages/ckeditor5-mermaid/package.json | 8 -- packages/ckeditor5/package.json | 10 -- packages/codemirror/package.json | 3 - packages/commons/package.json | 32 ------- packages/express-partial-content/package.json | 31 ------ packages/highlightjs/package.json | 3 - packages/share-theme/package.json | 3 - packages/turndown-plugin-gfm/package.json | 24 ----- 15 files changed, 1 insertion(+), 269 deletions(-) delete mode 100644 nx.json diff --git a/apps/desktop-e2e/package.json b/apps/desktop-e2e/package.json index 2e70fc803..7a1b278c7 100644 --- a/apps/desktop-e2e/package.json +++ b/apps/desktop-e2e/package.json @@ -1,24 +1,5 @@ { "name": "@triliumnext/desktop-e2e", "version": "0.0.1", - "private": true, - "nx": { - "name": "desktop-e2e", - "implicitDependencies": [ - "client", - "desktop" - ], - "targets": { - "e2e": { - "dependsOn": [ - "desktop:build", - "desktop:rebuild-deps" - ] - } - } - }, - "devDependencies": { - "dotenv": "17.2.1", - "electron": "37.4.0" - } + "private": true } diff --git a/apps/website/package.json b/apps/website/package.json index 4e6a141c8..aa8f73e17 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -33,14 +33,5 @@ }, "dependencies": { "@inlang/paraglide-js": "^2.0.0" - }, - "nx": { - "targets": { - "typecheck": { - "dependsOn": [ - "build" - ] - } - } } } diff --git a/nx.json b/nx.json deleted file mode 100644 index 927089448..000000000 --- a/nx.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "./node_modules/nx/schemas/nx-schema.json", - "defaultBase": "main", - "namedInputs": { - "default": [ - "{projectRoot}/**/*", - "sharedGlobals" - ], - "production": [ - "default", - "!{projectRoot}/.eslintrc.json", - "!{projectRoot}/eslint.config.mjs", - "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", - "!{projectRoot}/tsconfig.spec.json", - "!{projectRoot}/src/test-setup.[jt]s" - ], - "sharedGlobals": [ - "{workspaceRoot}/.github/workflows/release.yml", - "{workspaceRoot}/.github/workflows/playwright.yml" - ] - }, - "plugins": [ - { - "plugin": "@nx/js/typescript", - "options": { - "typecheck": { - "targetName": "typecheck" - }, - "build": { - "targetName": "build", - "configName": "tsconfig.lib.json", - "buildDepsName": "build-deps", - "watchDepsName": "watch-deps" - } - } - }, - { - "plugin": "@nx/eslint/plugin", - "options": { - "targetName": "lint" - } - }, - { - "plugin": "@nx/vite/plugin", - "options": { - "buildTargetName": "build", - "testTargetName": "test", - "serveTargetName": "serve", - "devTargetName": "dev", - "previewTargetName": "preview", - "serveStaticTargetName": "serve-static", - "typecheckTargetName": "typecheck", - "buildDepsTargetName": "build-deps", - "watchDepsTargetName": "watch-deps" - } - }, - { - "plugin": "@nx/playwright/plugin", - "options": { - "targetName": "e2e" - } - } - ], - "targetDefaults": { - "test": { - "dependsOn": [ - "^build" - ] - }, - "@nx/esbuild:esbuild": { - "cache": true, - "dependsOn": [ - "^build" - ], - "inputs": [ - "production", - "^production" - ] - }, - "e2e-ci--**/*": { - "dependsOn": [ - "^build" - ] - } - }, - "generators": { - "@nx/web:application": { - "style": "css", - "linter": "eslint", - "unitTestRunner": "vitest", - "e2eTestRunner": "playwright" - } - } -} diff --git a/packages/ckeditor5-admonition/package.json b/packages/ckeditor5-admonition/package.json index 377abce2c..33a775b76 100644 --- a/packages/ckeditor5-admonition/package.json +++ b/packages/ckeditor5-admonition/package.json @@ -67,13 +67,5 @@ "**/*.css": [ "stylelint --quiet --allow-empty-input" ] - }, - "nx": { - "name": "ckeditor5-admonition", - "targets": { - "build": { - "cache": "true" - } - } } } diff --git a/packages/ckeditor5-footnotes/package.json b/packages/ckeditor5-footnotes/package.json index b2eb2e16b..c49c08aee 100644 --- a/packages/ckeditor5-footnotes/package.json +++ b/packages/ckeditor5-footnotes/package.json @@ -66,13 +66,5 @@ "**/*.css": [ "stylelint --quiet --allow-empty-input" ] - }, - "nx": { - "name": "ckeditor5-footnotes", - "targets": { - "build": { - "cache": "true" - } - } } } diff --git a/packages/ckeditor5-keyboard-marker/package.json b/packages/ckeditor5-keyboard-marker/package.json index e4f34f135..4c00d5173 100644 --- a/packages/ckeditor5-keyboard-marker/package.json +++ b/packages/ckeditor5-keyboard-marker/package.json @@ -68,13 +68,5 @@ "**/*.css": [ "stylelint --quiet --allow-empty-input" ] - }, - "nx": { - "name": "ckeditor5-keyboard-marker", - "targets": { - "build": { - "cache": "true" - } - } } } diff --git a/packages/ckeditor5-math/package.json b/packages/ckeditor5-math/package.json index a6f30aba3..486b26559 100644 --- a/packages/ckeditor5-math/package.json +++ b/packages/ckeditor5-math/package.json @@ -70,14 +70,6 @@ "stylelint --quiet --allow-empty-input" ] }, - "nx": { - "name": "ckeditor5-math", - "targets": { - "build": { - "cache": "true" - } - } - }, "dependencies": { "@ckeditor/ckeditor5-icons": "46.0.2" } diff --git a/packages/ckeditor5-mermaid/package.json b/packages/ckeditor5-mermaid/package.json index 41d4c1594..006f3e13b 100644 --- a/packages/ckeditor5-mermaid/package.json +++ b/packages/ckeditor5-mermaid/package.json @@ -72,13 +72,5 @@ "dependencies": { "@types/lodash-es": "4.17.12", "lodash-es": "^4.17.21" - }, - "nx": { - "name": "ckeditor5-mermaid", - "targets": { - "build": { - "cache": "true" - } - } } } diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index 81d63ffd1..2159a3517 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -5,16 +5,6 @@ "private": true, "type": "module", "main": "./src/index.ts", - "nx": { - "name": "ckeditor5", - "targets": { - "typecheck": { - "dependsOn": [ - "^build" - ] - } - } - }, "dependencies": { "@triliumnext/ckeditor5-admonition": "workspace:*", "@triliumnext/ckeditor5-footnotes": "workspace:*", diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json index f6d93d94a..2e1cba9a0 100644 --- a/packages/codemirror/package.json +++ b/packages/codemirror/package.json @@ -4,9 +4,6 @@ "private": true, "type": "module", "main": "./src/index.ts", - "nx": { - "name": "codemirror" - }, "dependencies": { "@codemirror/commands": "6.8.1", "@codemirror/lang-css": "6.3.1", diff --git a/packages/commons/package.json b/packages/commons/package.json index 8b9be2e0a..ebc1884d0 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -10,37 +10,5 @@ "name": "Trilium Notes Team", "email": "contact@eliandoran.me", "url": "https://github.com/TriliumNext/Notes" - }, - "nx": { - "name": "commons", - "sourceRoot": "packages/commons/src", - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "defaultConfiguration": "production", - "options": { - "main": "packages/commons/src/index.ts", - "outputPath": "packages/commons/dist", - "outputFileName": "main.js", - "tsConfig": "packages/commons/tsconfig.lib.json", - "platform": "node", - "format": [ - "esm" - ], - "declarationRootDir": "packages/commons/src" - }, - "configurations": { - "development": { - "minify": false - }, - "production": { - "minify": true - } - } - } - } } } \ No newline at end of file diff --git a/packages/express-partial-content/package.json b/packages/express-partial-content/package.json index 437e4d40f..11a2848f5 100644 --- a/packages/express-partial-content/package.json +++ b/packages/express-partial-content/package.json @@ -12,37 +12,6 @@ "stream", "typescript" ], - "nx": { - "name": "express-partial-content", - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "defaultConfiguration": "production", - "options": { - "main": "packages/express-partial-content/src/index.ts", - "outputPath": "packages/express-partial-content/dist", - "outputFileName": "main.js", - "tsConfig": "packages/express-partial-content/tsconfig.lib.json", - "platform": "node", - "format": [ - "esm" - ], - "declarationRootDir": "packages/express-partial-content/src" - }, - "configurations": { - "development": { - "minify": false - }, - "production": { - "minify": true - } - } - } - } - }, "dependencies": { "tslib": "^2.3.0" } diff --git a/packages/highlightjs/package.json b/packages/highlightjs/package.json index e2214e515..249e2373f 100644 --- a/packages/highlightjs/package.json +++ b/packages/highlightjs/package.json @@ -4,9 +4,6 @@ "private": true, "type": "module", "main": "./src/index.ts", - "nx": { - "name": "highlightjs" - }, "dependencies": { "@exercism/highlightjs-gdscript": "0.0.1", "@triliumnext/commons": "workspace:*", diff --git a/packages/share-theme/package.json b/packages/share-theme/package.json index 7c2740589..0868d34a3 100644 --- a/packages/share-theme/package.json +++ b/packages/share-theme/package.json @@ -31,8 +31,5 @@ "eslint": "^9.0.0", "highlight.js": "^11.8.0", "typescript": "^5.2.2" - }, - "nx": { - "name": "share-theme" } } diff --git a/packages/turndown-plugin-gfm/package.json b/packages/turndown-plugin-gfm/package.json index 1c9d2ab05..7d69ecd39 100644 --- a/packages/turndown-plugin-gfm/package.json +++ b/packages/turndown-plugin-gfm/package.json @@ -21,30 +21,6 @@ "github-flavored-markdown", "gfm" ], - "nx": { - "name": "turndown-plugin-gfm", - "sourceRoot": "packages/turndown-plugin-gfm/src", - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "outputPath": "packages/turndown-plugin-gfm/dist", - "main": "packages/turndown-plugin-gfm/src/index.js", - "tsConfig": "packages/turndown-plugin-gfm/tsconfig.lib.json", - "format": [ - "esm" - ], - "declarationRootDir": "packages/turndown-plugin-gfm/src" - } - }, - "test": { - "command": "node packages/turndown-plugin-gfm/test/turndown-plugin-gfm-test.js" - } - } - }, "devDependencies": { "turndown": "7.2.1", "turndown-attendant": "0.0.3" From 3de9d077697815f1f3479fb12b466181f504480f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 17:54:05 +0300 Subject: [PATCH 54/85] chore: update lock --- pnpm-lock.yaml | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46c12a288..27efa733a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -387,14 +387,7 @@ importers: specifier: ^7.1.1 version: 7.1.3 - apps/desktop-e2e: - devDependencies: - dotenv: - specifier: 17.2.1 - version: 17.2.1 - electron: - specifier: 37.4.0 - version: 37.4.0 + apps/desktop-e2e: {} apps/dump-db: dependencies: @@ -14770,6 +14763,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-watchdog': 46.0.2 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-dev-build-tools@43.1.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.2)': dependencies: @@ -15458,6 +15453,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-restricted-editing@46.0.2': dependencies: @@ -15543,8 +15540,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-special-characters@46.0.2': dependencies: From 7c50251c37ff98a24f5d411b0827441e4fe3635a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 18:32:03 +0300 Subject: [PATCH 55/85] chore(dx): clean up global package.json --- package.json | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index c7c746135..b742d0214 100644 --- a/package.json +++ b/package.json @@ -6,24 +6,21 @@ "doc": "docs" }, "scripts": { - "client:test": "nx test client", - "client:build": "nx build client", - "client:coverage": "nx test client --coverage", - "server:test": "nx test server", - "server:build": "nx build server", - "server:coverage": "nx test server --coverage", + "client:test": "pnpm run --filter client test", + "client:build": "pnpm run --filter client build", + "client:coverage": "pnpm run --filter client test --coverage", + "server:test": "pnpm run --filter server test", + "server:build": "pnpm run --filter server build", + "server:coverage": "pnpm run --filter server test --coverage", "server:start": "pnpm run --filter server dev", - "server:start-prod": "nx run server:start-prod", + "server:start-prod": "pnpm run --filter server start-prod", "desktop:start": "pnpm run --filter desktop dev", - "electron:build": "nx build desktop", + "electron:build": "pnpm run --filter desktop build", "chore:ci-update-nightly-version": "tsx ./scripts/update-nightly-version.ts", "chore:generate-openapi": "tsx ./scripts/generate-openapi.ts", "chore:update-build-info": "tsx ./scripts/update-build-info.ts", "chore:update-version": "tsx ./scripts/update-version.ts", - "test:all": "pnpm test:parallel && pnpm test:sequential", - "test:parallel": "pnpm nx run-many -t test --all --exclude=server,ckeditor5-mermaid,ckeditor5-math --parallel", - "test:sequential": "pnpm nx run-many -t test --projects=server,ckeditor5-mermaid,ckeditor5-math --parallel=1", - "coverage": "pnpm nx run-many -t coverage" + "test:all": "pnpm -r test" }, "private": true, "devDependencies": { From 26afdd105fe3e6755e42be006d20806c67f22afc Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 18:33:22 +0300 Subject: [PATCH 56/85] chore(dx/server): get tests to run --- apps/server/spec/etapi/import-zip.spec.ts | 2 +- apps/server/vite.config.mts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/server/spec/etapi/import-zip.spec.ts b/apps/server/spec/etapi/import-zip.spec.ts index c42623b76..3215c90ee 100644 --- a/apps/server/spec/etapi/import-zip.spec.ts +++ b/apps/server/spec/etapi/import-zip.spec.ts @@ -30,5 +30,5 @@ describe("etapi/import", () => { .expect(201); expect(response.body.note.title).toStrictEqual("Journal"); expect(response.body.branch.parentNoteId).toStrictEqual("root"); - }); + }, 10_000); }); diff --git a/apps/server/vite.config.mts b/apps/server/vite.config.mts index 76829347a..e9d88fcfa 100644 --- a/apps/server/vite.config.mts +++ b/apps/server/vite.config.mts @@ -10,6 +10,11 @@ export default defineConfig(() => ({ globals: true, setupFiles: ["./spec/setup.ts"], environment: "node", + env: { + NODE_ENV: "development", + TRILIUM_DATA_DIR: "./spec/db", + TRILIUM_INTEGRATION_TEST: "memory" + }, include: ['{src,spec}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], exclude: [ "spec/build-checks/**", From 3fda97a9bda3dace4c1074b24889c3932a72b15a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 18:38:50 +0300 Subject: [PATCH 57/85] chore(dx/client): allocate more memory for the build --- apps/client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/package.json b/apps/client/package.json index 9a979ccdb..ef91684f2 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/TriliumNext/Notes" }, "scripts": { - "build": "vite build", + "build": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vite build", "test": "vitest", "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" }, From 04753226e5f01b34d008ad2c4511059d07de0857 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 18:42:30 +0300 Subject: [PATCH 58/85] chore(dx/ci): fix package command --- .github/actions/build-server/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/build-server/action.yml b/.github/actions/build-server/action.yml index c5935172d..7e15f1e20 100644 --- a/.github/actions/build-server/action.yml +++ b/.github/actions/build-server/action.yml @@ -23,7 +23,7 @@ runs: shell: bash run: | pnpm run chore:update-build-info - pnpm server:package + pnpm run --filter server package - name: Prepare artifacts shell: bash run: | From 15fba23ad73e3768083307d77f6c4569c5d31dcf Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:00:49 +0300 Subject: [PATCH 59/85] chore(dx/ci): denx-ify playwright --- apps/server-e2e/.env | 2 +- apps/server-e2e/playwright.config.ts | 48 +++++++--------------------- apps/server/package.json | 7 +--- 3 files changed, 13 insertions(+), 44 deletions(-) diff --git a/apps/server-e2e/.env b/apps/server-e2e/.env index f13f7d757..9087bb8d5 100644 --- a/apps/server-e2e/.env +++ b/apps/server-e2e/.env @@ -1,3 +1,3 @@ TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 -TRILIUM_DATA_DIR=apps/server/spec/db \ No newline at end of file +TRILIUM_DATA_DIR=spec/db \ No newline at end of file diff --git a/apps/server-e2e/playwright.config.ts b/apps/server-e2e/playwright.config.ts index 75de90147..997e4f036 100644 --- a/apps/server-e2e/playwright.config.ts +++ b/apps/server-e2e/playwright.config.ts @@ -1,6 +1,5 @@ import { defineConfig, devices } from '@playwright/test'; -import { nxE2EPreset } from '@nx/playwright/preset'; -import { workspaceRoot } from '@nx/devkit'; +import { join } from 'path'; require('dotenv').config({ path: __dirname + "/" + ".env" @@ -14,55 +13,30 @@ const baseURL = process.env['BASE_URL'] || `http://127.0.0.1:${port}`; * See https://playwright.dev/docs/test-configuration. */ export default defineConfig({ - ...nxE2EPreset(__filename, { testDir: './src' }), + testDir: "src", + reporter: [["list"], ["html", { outputFolder: "test-output" }]], + outputDir: "test-output", + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { baseURL, /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', }, + /* Run your local dev server before starting the tests */ webServer: !process.env.TRILIUM_DOCKER ? { - command: 'pnpm server:start-prod', + command: 'pnpm start-prod', url: baseURL, reuseExistingServer: !process.env.CI, - cwd: workspaceRoot, + cwd: join(__dirname, "../server"), timeout: 5 * 60 * 1000 } : undefined, + projects: [ { name: "chromium", use: { ...devices["Desktop Chrome"] }, - }, - - // { - // name: "firefox", - // use: { ...devices["Desktop Firefox"] }, - // }, - - // { - // name: "webkit", - // use: { ...devices["Desktop Safari"] }, - // }, - - // Uncomment for mobile browsers support - /* { - name: 'Mobile Chrome', - use: { ...devices['Pixel 5'] }, - }, - { - name: 'Mobile Safari', - use: { ...devices['iPhone 12'] }, - }, */ - - // Uncomment for branded browsers - /* { - name: 'Microsoft Edge', - use: { ...devices['Desktop Edge'], channel: 'msedge' }, - }, - { - name: 'Google Chrome', - use: { ...devices['Desktop Chrome'], channel: 'chrome' }, - } */ - ], + } + ] }); diff --git a/apps/server/package.json b/apps/server/package.json index 6ad5f1a60..9bbe77ccd 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -10,6 +10,7 @@ "package": "pnpm build && bash scripts/build-server.sh", "test": "vitest", "test-build": "vitest --config vitest.build.config.mts", + "start-prod": "pnpm build && node dist/main.cjs", "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" }, "dependencies": { @@ -178,12 +179,6 @@ "runBuildTargetDependencies": false } }, - "start-prod": { - "dependsOn": [ - "build" - ], - "command": "node apps/server/dist/main.cjs" - }, "docker-build": { "dependsOn": [ "build" From 4306072ca78d82ff0f23e35d2104b6eb06687b46 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:09:45 +0300 Subject: [PATCH 60/85] chore(dx/ci): sequential/parallel tests --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b742d0214..f6751f4ea 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,9 @@ "chore:generate-openapi": "tsx ./scripts/generate-openapi.ts", "chore:update-build-info": "tsx ./scripts/update-build-info.ts", "chore:update-version": "tsx ./scripts/update-version.ts", - "test:all": "pnpm -r test" + "test:all": "pnpm test:parallel && pnpm test:sequential", + "test:parallel": "pnpm --filter=!server,ckeditor5-mermaid,ckeditor5-math --parallel test", + "test:sequential": "pnpm --filter=server,ckeditor5-mermaid,ckeditor5-math --sequential test" }, "private": true, "devDependencies": { From 3925ba3eef4766ec95a7dbcef00d3703a80516cd Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:16:49 +0300 Subject: [PATCH 61/85] chore(dx/ci): fix sequential/parallel tests --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f6751f4ea..91b5c14c8 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,8 @@ "chore:update-build-info": "tsx ./scripts/update-build-info.ts", "chore:update-version": "tsx ./scripts/update-version.ts", "test:all": "pnpm test:parallel && pnpm test:sequential", - "test:parallel": "pnpm --filter=!server,ckeditor5-mermaid,ckeditor5-math --parallel test", - "test:sequential": "pnpm --filter=server,ckeditor5-mermaid,ckeditor5-math --sequential test" + "test:parallel": "pnpm --filter=!server --filter=!ckeditor5-mermaid --filter=!ckeditor5-math --parallel test", + "test:sequential": "pnpm --filter=server --filter=ckeditor5-mermaid --filter=ckeditor5-math --sequential test" }, "private": true, "devDependencies": { From fd1c122cd48ad926487fbaf6583f16c4d974e5ab Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:29:38 +0300 Subject: [PATCH 62/85] chore(dx/apps): build db-compare & dump-db --- apps/db-compare/package.json | 61 ++-------------------------------- apps/dump-db/package.json | 63 ++---------------------------------- 2 files changed, 6 insertions(+), 118 deletions(-) diff --git a/apps/db-compare/package.json b/apps/db-compare/package.json index 370ae38a6..3bea74336 100644 --- a/apps/db-compare/package.json +++ b/apps/db-compare/package.json @@ -9,63 +9,8 @@ "sqlite": "5.1.1", "sqlite3": "5.1.7" }, - "nx": { - "name": "db-compare", - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "defaultConfiguration": "production", - "options": { - "platform": "node", - "outputPath": "apps/db-compare/dist", - "format": [ - "cjs" - ], - "bundle": false, - "main": "apps/db-compare/src/compare.ts", - "tsConfig": "apps/db-compare/tsconfig.app.json", - "assets": [], - "esbuildOptions": { - "sourcemap": true, - "outExtension": { - ".js": ".js" - } - } - }, - "configurations": { - "development": {}, - "production": { - "esbuildOptions": { - "sourcemap": false, - "outExtension": { - ".js": ".js" - } - } - } - } - }, - "serve": { - "executor": "@nx/js:node", - "defaultConfiguration": "development", - "dependsOn": [ - "build" - ], - "options": { - "buildTarget": "db-compare:build", - "runBuildTargetDependencies": false - }, - "configurations": { - "development": { - "buildTarget": "db-compare:build:development" - }, - "production": { - "buildTarget": "db-compare:build:production" - } - } - } - } + "scripts": { + "dev": "tsx src/compare.ts", + "build": "esbuild --platform=node --format=cjs --outdir=dist src/compare.ts" } } diff --git a/apps/dump-db/package.json b/apps/dump-db/package.json index b134ded67..623dad60c 100644 --- a/apps/dump-db/package.json +++ b/apps/dump-db/package.json @@ -15,65 +15,8 @@ "@types/mime-types": "^3.0.0", "@types/yargs": "^17.0.33" }, - "nx": { - "name": "dump-db", - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "defaultConfiguration": "production", - "options": { - "platform": "node", - "outputPath": "apps/dump-db/dist", - "format": [ - "cjs" - ], - "bundle": false, - "main": "apps/dump-db/src/main.ts", - "tsConfig": "apps/dump-db/tsconfig.app.json", - "assets": [ - "apps/dump-db/src/assets" - ], - "esbuildOptions": { - "sourcemap": true, - "outExtension": { - ".js": ".js" - } - } - }, - "configurations": { - "development": {}, - "production": { - "esbuildOptions": { - "sourcemap": false, - "outExtension": { - ".js": ".js" - } - } - } - } - }, - "serve": { - "executor": "@nx/js:node", - "defaultConfiguration": "development", - "dependsOn": [ - "build" - ], - "options": { - "buildTarget": "dump-db:build", - "runBuildTargetDependencies": false - }, - "configurations": { - "development": { - "buildTarget": "dump-db:build:development" - }, - "production": { - "buildTarget": "dump-db:build:production" - } - } - } - } + "scripts": { + "dev": "tsx src/main.ts", + "build": "esbuild --platform=node --format=cjs --outdir=dist src/main.ts" } } From 8d7af7b01d7d054548de5ebac4e5b7b48ff45df0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:44:28 +0300 Subject: [PATCH 63/85] chore(dx/server): de-nxify --- apps/server/.edit-integration-db.env | 6 - apps/server/.serve-nodir.env | 3 - apps/server/.serve.env | 4 - apps/server/.start-prod.env | 3 - apps/server/.test.env | 4 - apps/server/package.json | 199 ++------------------------- 6 files changed, 12 insertions(+), 207 deletions(-) delete mode 100644 apps/server/.edit-integration-db.env delete mode 100644 apps/server/.serve-nodir.env delete mode 100644 apps/server/.serve.env delete mode 100644 apps/server/.start-prod.env delete mode 100644 apps/server/.test.env diff --git a/apps/server/.edit-integration-db.env b/apps/server/.edit-integration-db.env deleted file mode 100644 index 94194e2b1..000000000 --- a/apps/server/.edit-integration-db.env +++ /dev/null @@ -1,6 +0,0 @@ -TRILIUM_ENV=dev -TRILIUM_DATA_DIR=./apps/server/spec/db -TRILIUM_RESOURCE_DIR=./apps/server/dist -TRILIUM_PUBLIC_SERVER=http://localhost:4200 -TRILIUM_PORT=8086 -TRILIUM_INTEGRATION_TEST=edit \ No newline at end of file diff --git a/apps/server/.serve-nodir.env b/apps/server/.serve-nodir.env deleted file mode 100644 index 3612d5d9b..000000000 --- a/apps/server/.serve-nodir.env +++ /dev/null @@ -1,3 +0,0 @@ -TRILIUM_ENV=dev -TRILIUM_RESOURCE_DIR=./apps/server/dist -TRILIUM_PUBLIC_SERVER=http://localhost:4200 \ No newline at end of file diff --git a/apps/server/.serve.env b/apps/server/.serve.env deleted file mode 100644 index 43591d92c..000000000 --- a/apps/server/.serve.env +++ /dev/null @@ -1,4 +0,0 @@ -TRILIUM_ENV=dev -TRILIUM_DATA_DIR=./apps/server/data -TRILIUM_RESOURCE_DIR=./apps/server/dist -TRILIUM_PUBLIC_SERVER=http://localhost:4200 \ No newline at end of file diff --git a/apps/server/.start-prod.env b/apps/server/.start-prod.env deleted file mode 100644 index 9bd1c0d93..000000000 --- a/apps/server/.start-prod.env +++ /dev/null @@ -1,3 +0,0 @@ -TRILIUM_ENV=production -TRILIUM_DATA_DIR=./apps/server/data -TRILIUM_PORT=8082 \ No newline at end of file diff --git a/apps/server/.test.env b/apps/server/.test.env deleted file mode 100644 index e33a78275..000000000 --- a/apps/server/.test.env +++ /dev/null @@ -1,4 +0,0 @@ -TRILIUM_ENV=dev -TRILIUM_DATA_DIR=./spec/db -TRILIUM_PUBLIC_SERVER=http://localhost:4200 -TRILIUM_INTEGRATION_TEST=memory \ No newline at end of file diff --git a/apps/server/package.json b/apps/server/package.json index 9bbe77ccd..cc0910bf0 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -6,12 +6,22 @@ "main": "./src/main.ts", "scripts": { "dev": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", + "dev-no-dir": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", + "edit-integration-db": "cross-env NODE_ENV=development TRILIUM_PORT=8086 TRILIUM_ENV=dev TRILIUM_DATA_DIR=spec/db TRILIUM_INTEGRATION_TEST=edit TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", "build": "tsx scripts/build.ts", "package": "pnpm build && bash scripts/build-server.sh", "test": "vitest", "test-build": "vitest --config vitest.build.config.mts", - "start-prod": "pnpm build && node dist/main.cjs", - "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" + "start-prod": "pnpm build && cross-env TRILIUM_ENV=production TRILIUM_DATA_DIR=./apps/server/data TRILIUM_PORT=8082 node dist/main.cjs", + "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular", + "docker-build-debian": "pnpm build && docker build . -t triliumnext-debian -f Dockerfile", + "docker-build-alpine": "pnpm build && docker build . -t triliumnext-alpine -f Dockerfile.alpine", + "docker-build-rootless-debian": "pnpm build && docker build . -t triliumnext-rootless-debian -f Dockerfile.rootless", + "docker-build-rootless-alpine": "pnpm build && docker build . -t triliumnext-rootless-alpine -f Dockerfile.alpine.rootless", + "docker-start-debian": "pnpm docker-build-debian && docker run -p 8081:8080 triliumnext-debian", + "docker-start-alpine": "pnpm docker-build-alpine && docker run -p 8081:8080 triliumnext-alpine", + "docker-start-rootless-debian": "pnpm docker-build-rootless-debian && docker run -p 8081:8080 triliumnext-rootless-debian", + "docker-start-rootless-alpine": "pnpm docker-build-rootless-alpine && docker run -p 8081:8080 triliumnext-rootless-alpine" }, "dependencies": { "better-sqlite3": "12.2.0" @@ -121,190 +131,5 @@ "ws": "8.18.3", "xml2js": "0.6.2", "yauzl": "3.2.0" - }, - "nx": { - "name": "server", - "implicitDependencies": [ - "share-theme" - ], - "targets": { - "serve": { - "executor": "@nx/js:node", - "dependsOn": [ - { - "projects": [ - "client" - ], - "target": "serve" - }, - "build-without-client" - ], - "continuous": true, - "options": { - "buildTarget": "server:build-without-client:development", - "runBuildTargetDependencies": false - } - }, - "serve-nodir": { - "executor": "@nx/js:node", - "dependsOn": [ - { - "projects": [ - "client" - ], - "target": "serve" - }, - "build-without-client" - ], - "continuous": true, - "options": { - "buildTarget": "server:build-without-client:development", - "runBuildTargetDependencies": false - } - }, - "edit-integration-db": { - "executor": "@nx/js:node", - "dependsOn": [ - { - "projects": [ - "client" - ], - "target": "serve" - }, - "build-without-client" - ], - "continuous": true, - "options": { - "buildTarget": "server:build-without-client:development", - "runBuildTargetDependencies": false - } - }, - "docker-build": { - "dependsOn": [ - "build" - ], - "options": { - "cwd": "{projectRoot}" - }, - "executor": "nx:run-commands", - "defaultConfiguration": "alpine", - "configurations": { - "debian": { - "command": "docker build . -t triliumnext-debian -f Dockerfile" - }, - "alpine": { - "command": "docker build . -t triliumnext-alpine -f Dockerfile.alpine" - }, - "rootless-debian": { - "command": "docker build . -t triliumnext-rootless-debian -f Dockerfile.rootless" - }, - "rootless-alpine": { - "command": "docker build . -t triliumnext-rootless-alpine -f Dockerfile.alpine.rootless" - } - } - }, - "docker-start": { - "dependsOn": [ - "docker-build" - ], - "executor": "nx:run-commands", - "defaultConfiguration": "alpine", - "configurations": { - "debian": { - "command": "docker run -p 8081:8080 triliumnext-debian" - }, - "alpine": { - "command": "docker run -p 8081:8080 triliumnext-alpine" - }, - "rootless-debian": { - "command": "docker run -p 8081:8080 triliumnext-rootless-debian" - }, - "rootless-alpine": { - "command": "docker run -p 8081:8080 triliumnext-rootless-alpine" - } - } - }, - "build-without-client": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "main": "apps/server/src/main.ts", - "outputPath": "apps/server/dist", - "outputFileName": "main.js", - "tsConfig": "apps/server/tsconfig.app.json", - "platform": "node", - "format": [ - "cjs" - ], - "esbuildOptions": { - "loader": { - ".css": "text", - ".ejs": "text" - } - }, - "declarationRootDir": "apps/server/src", - "minify": false, - "sourcemap": true, - "assets": [ - { - "glob": "**/*", - "input": "apps/server/src/assets", - "output": "assets" - }, - { - "glob": "**/*", - "input": "packages/share-theme/src/templates", - "output": "share-theme/templates" - } - ] - } - }, - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "dependsOn": [ - "^build", - "client:build" - ], - "defaultConfiguration": "production", - "configurations": { - "production": { - "minify": true, - "sourcemap": false - }, - "development": { - "minify": false, - "sourcemap": true - } - }, - "options": { - "declarationRootDir": "apps/server/src", - "thirdParty": true, - "declaration": false, - "additionalEntryPoints": [ - "apps/server/src/docker_healthcheck.ts" - ], - "assets": [ - { - "glob": "**/*", - "input": "packages/share-theme/src/templates", - "output": "share-theme/templates" - }, - { - "glob": "**/*", - "input": "apps/client/dist", - "output": "public", - "ignore": [ - "webpack-stats.json" - ] - } - ] - } - } - } } } \ No newline at end of file From bb20de6c24065d30f3cea0df43d72ec873969886 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:44:38 +0300 Subject: [PATCH 64/85] chore(dx/env): remove unnecessary nx config --- .vscode/extensions.json | 1 - .vscode/mcp.json | 8 -------- .vscode/settings.json | 3 +-- 3 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 .vscode/mcp.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json index e64c42352..4db7b7470 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -5,7 +5,6 @@ "lokalise.i18n-ally", "ms-azuretools.vscode-docker", "ms-playwright.playwright", - "nrwl.angular-console", "redhat.vscode-yaml", "tobermory.es6-string-html", "vitest.explorer", diff --git a/.vscode/mcp.json b/.vscode/mcp.json deleted file mode 100644 index 28994bb29..000000000 --- a/.vscode/mcp.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "servers": { - "nx-mcp": { - "type": "http", - "url": "http://localhost:9461/mcp" - } - } -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 4ee21bb3c..9ee96f4c1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -35,6 +35,5 @@ "docs/**/*.png": true, "apps/server/src/assets/doc_notes/**": true, "apps/edit-docs/demo/**": true - }, - "nxConsole.generateAiAgentRules": true + } } \ No newline at end of file From c1c237402a9e46f289a3f024d90cbd032f827f42 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:49:36 +0300 Subject: [PATCH 65/85] chore(dx/desktop): clean up package.json --- apps/desktop/package.json | 96 +--------------------------------- apps/desktop/scripts/start.mts | 1 - apps/server/package.json | 2 +- scripts/electron-rebuild.mts | 89 ------------------------------- 4 files changed, 3 insertions(+), 185 deletions(-) delete mode 100644 scripts/electron-rebuild.mts diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 036745fe2..16d193593 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -30,7 +30,8 @@ "prebuild-install": "^7.1.1" }, "scripts": { - "dev": "tsx scripts/start.mts", + "dev": "cross-env TRILIUM_DATA_DIR=data tsx scripts/start.mts", + "start-no-dir": "cross-env tsx scripts/start.mts", "build": "tsx scripts/build.ts", "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist", "electron-forge:make": "pnpm build && electron-forge make dist", @@ -43,98 +44,5 @@ "name": "Trilium Notes Team", "email": "contact@eliandoran.me", "url": "https://github.com/TriliumNext/Notes" - }, - "nx": { - "name": "desktop", - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "defaultConfiguration": "production", - "configurations": { - "production": { - "minify": true, - "sourcemap": false - }, - "development": { - "minify": false, - "sourcemap": true - } - }, - "options": { - "main": "apps/desktop/src/electron-main.ts", - "outputPath": "apps/desktop/dist", - "tsConfig": "apps/desktop/tsconfig.app.json", - "external": [ - "electron", - "@electron/remote", - "better-sqlite3", - "./xhr-sync-worker.js" - ], - "thirdParty": true, - "esbuildOptions": { - "splitting": false, - "loader": { - ".css": "text" - } - }, - "declarationRootDir": "apps/desktop/src" - } - }, - "rebuild-deps": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "defaultConfiguration": "default", - "cache": false, - "configurations": { - "default": { - "command": "cross-env DEBUG=* tsx scripts/electron-rebuild.mts {projectRoot}/dist" - }, - "nixos": { - "command": "cross-env DEBUG=* tsx scripts/electron-rebuild.mts {projectRoot}/dist $(nix-shell -p electron_35 --run \"electron --version\")" - } - } - }, - "serve": { - "executor": "nx:run-commands", - "dependsOn": [ - "rebuild-deps" - ], - "defaultConfiguration": "default", - "configurations": { - "default": { - "command": "electron main.cjs", - "cwd": "{projectRoot}/dist" - }, - "nixos": { - "command": "nix-shell -p electron_35 --run \"electron {projectRoot}/dist/main.cjs\"", - "cwd": ".", - "forwardAllArgs": false - } - } - }, - "serve-nodir": { - "executor": "nx:run-commands", - "dependsOn": [ - "rebuild-deps" - ], - "defaultConfiguration": "default", - "configurations": { - "default": { - "command": "electron main.cjs", - "cwd": "{projectRoot}/dist" - }, - "nixos": { - "command": "nix-shell -p electron_35 --run \"electron {projectRoot}/dist/main.cjs\"", - "cwd": ".", - "forwardAllArgs": false - } - } - } - } } } \ No newline at end of file diff --git a/apps/desktop/scripts/start.mts b/apps/desktop/scripts/start.mts index 17245205c..a2151ba2d 100644 --- a/apps/desktop/scripts/start.mts +++ b/apps/desktop/scripts/start.mts @@ -20,7 +20,6 @@ execSync(`${electronPath} ./src/main.ts`, { NODE_OPTIONS: "--import tsx", NODE_ENV: "development", TRILIUM_ENV: "dev", - TRILIUM_DATA_DIR: "data", TRILIUM_RESOURCE_DIR: "../server/src", BETTERSQLITE3_NATIVE_PATH: join(projectRoot, "node_modules/better-sqlite3/build/Release/better_sqlite3.node"), LD_LIBRARY_PATH diff --git a/apps/server/package.json b/apps/server/package.json index cc0910bf0..5985632bd 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -6,7 +6,7 @@ "main": "./src/main.ts", "scripts": { "dev": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", - "dev-no-dir": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", + "start-no-dir": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", "edit-integration-db": "cross-env NODE_ENV=development TRILIUM_PORT=8086 TRILIUM_ENV=dev TRILIUM_DATA_DIR=spec/db TRILIUM_INTEGRATION_TEST=edit TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", "build": "tsx scripts/build.ts", "package": "pnpm build && bash scripts/build-server.sh", diff --git a/scripts/electron-rebuild.mts b/scripts/electron-rebuild.mts deleted file mode 100644 index 46ef21986..000000000 --- a/scripts/electron-rebuild.mts +++ /dev/null @@ -1,89 +0,0 @@ -/** - * @module - * - * This script is used internally by the `rebuild-deps` target of the `desktop`. Normally we could use - * `electron-rebuild` CLI directly, but it would rebuild the monorepo-level dependencies and breaks - * the server build (and it doesn't expose a CLI option to override this). - * - * A side purpose is to generate a fake `package.json` file in the `dist` directory - * that contains only the native dependencies. This is used by `electron-forge`. - */ - -import { join, resolve } from "path"; -import { rebuild } from "@electron/rebuild" -import { readFileSync, rmSync, writeFileSync } from "fs"; - -const nativeDependencies = [ - "better-sqlite3" -]; - -function parsePackageJson(distDir: string) { - const packageJsonPath = join(distDir, "../package.json"); - const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8")); - let electronVersion: string; - - if (process.argv[3]) { - electronVersion = process.argv[3]; - } else { - electronVersion = packageJson?.devDependencies?.electron ?? packageJson?.dependencies?.electron; - if (!electronVersion) { - console.error(`Unable to retrieve Electron version in '${resolve(packageJsonPath)}'.`); - process.exit(3); - } - } - - return { - electronVersion, - packageJson - }; -} - -function createFakePackageJson(distPath: string, packageJson: any) { - const finalDependencies = {}; - for (const dep of nativeDependencies) { - finalDependencies[dep] = packageJson.dependencies[dep]; - } - - const fakePackageJson: any = { - name: "trilium", - version: packageJson.version, - main: packageJson.main, - author: packageJson.author, - license: packageJson.license, - description: packageJson.description, - dependencies: finalDependencies, - devDependencies: { - "electron": packageJson.devDependencies?.electron || packageJson.dependencies?.electron, - } - }; - if (packageJson?.config?.forge) { - fakePackageJson.config = { - forge: join("..", packageJson.config.forge) - }; - } - writeFileSync(distPath, JSON.stringify(fakePackageJson, null, 2), "utf-8"); -} - -function main() { - const distDir = resolve(process.argv[2]); - if (!distDir) { - console.error("Missing root dir as argument."); - process.exit(1); - } - - const { electronVersion, packageJson } = parsePackageJson(distDir); - const packageJsonPath = join(distDir, "package.json"); - createFakePackageJson(packageJsonPath, packageJson); - - console.log(`Rebuilding ${distDir} with version ${electronVersion}...`); - - rebuild({ - // We force the project root path to avoid electron-rebuild from rebuilding the monorepo-level dependency and breaking the server. - projectRootPath: distDir, - buildPath: distDir, - force: true, - electronVersion, - }); -} - -main(); From d058dbe9af2911ac7bff85e76f3ce6d7aae1f4e8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:56:18 +0300 Subject: [PATCH 66/85] chore(dx/desktop): clean up env --- apps/desktop/.serve-nodir.env | 1 - apps/desktop/.serve.env | 3 --- apps/desktop/package.json | 4 ++-- 3 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 apps/desktop/.serve-nodir.env delete mode 100644 apps/desktop/.serve.env diff --git a/apps/desktop/.serve-nodir.env b/apps/desktop/.serve-nodir.env deleted file mode 100644 index 9ee6c438e..000000000 --- a/apps/desktop/.serve-nodir.env +++ /dev/null @@ -1 +0,0 @@ -TRILIUM_PORT=37743 \ No newline at end of file diff --git a/apps/desktop/.serve.env b/apps/desktop/.serve.env deleted file mode 100644 index d49595a69..000000000 --- a/apps/desktop/.serve.env +++ /dev/null @@ -1,3 +0,0 @@ -TRILIUM_PORT=37741 -TRILIUM_DATA_DIR=../data -NODE_OPTIONS=--enable-source-maps \ No newline at end of file diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 16d193593..2a98a880b 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -30,8 +30,8 @@ "prebuild-install": "^7.1.1" }, "scripts": { - "dev": "cross-env TRILIUM_DATA_DIR=data tsx scripts/start.mts", - "start-no-dir": "cross-env tsx scripts/start.mts", + "dev": "cross-env TRILIUM_PORT=37741 TRILIUM_DATA_DIR=data tsx scripts/start.mts", + "start-no-dir": "cross-env TRILIUM_PORT=37743 tsx scripts/start.mts", "build": "tsx scripts/build.ts", "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist", "electron-forge:make": "pnpm build && electron-forge make dist", From 26c7f0b0170ea334f2687c0f554258dd06a69c49 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 19:56:27 +0300 Subject: [PATCH 67/85] feat(dx/desktop): improve rebuilding experience on NixOS --- apps/desktop/scripts/rebuild.mts | 16 +++------------- apps/desktop/scripts/start.mts | 15 ++++----------- scripts/utils.mts | 12 +++++++++++- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/apps/desktop/scripts/rebuild.mts b/apps/desktop/scripts/rebuild.mts index 25b341ada..635d4690f 100644 --- a/apps/desktop/scripts/rebuild.mts +++ b/apps/desktop/scripts/rebuild.mts @@ -1,8 +1,8 @@ import { join } from "path"; -import { cpSync, existsSync, mkdirSync, readFileSync, rmSync } from "fs"; +import { cpSync, existsSync, mkdirSync, rmSync } from "fs"; import { execSync } from "child_process"; import { rebuild } from "@electron/rebuild" -import { isNixOS, resetPath } from "../../../scripts/utils.mjs"; +import { getElectronPath, isNixOS } from "../../../scripts/utils.mjs"; import packageJson from "../package.json" with { type: "json" }; const desktopProjectRoot = join(import.meta.dirname, ".."); @@ -33,24 +33,14 @@ function rebuildNativeDependencies() { buildPath: desktopProjectRoot, electronVersion }); - - if (isNixOS()) { - console.log("Patching ELF..."); - - return execSync(`nix-shell -p auto-patchelf gcc.cc.lib --run "auto-patchelf --paths node_modules/better-sqlite3/build/Release/better_sqlite3.node --libs ${libStdPath}"`, { - cwd: desktopProjectRoot, - stdio: "inherit" - }); - } } function determineElectronVersion() { if (isNixOS()) { console.log("Detected NixOS, reading Electron version from PATH"); - resetPath(); try { - return execSync("electron --version", { }).toString("utf-8"); + return execSync(`${getElectronPath()} --version`, { }).toString("utf-8"); } catch (e) { console.error("Got error while trying to read the Electron version from shell. Make sure that an Electron version is in the PATH (e.g. `nix-shell -p electron`)"); process.exit(1); diff --git a/apps/desktop/scripts/start.mts b/apps/desktop/scripts/start.mts index a2151ba2d..e283a7023 100644 --- a/apps/desktop/scripts/start.mts +++ b/apps/desktop/scripts/start.mts @@ -1,18 +1,11 @@ -import { execSync, spawnSync } from "child_process"; -import { isNixOS, resetPath } from "../../../scripts/utils.mjs"; +import { execSync } from "child_process"; +import { getElectronPath, isNixOS } from "../../../scripts/utils.mjs"; import { join } from "path"; const projectRoot = join(import.meta.dirname, ".."); +const LD_LIBRARY_PATH = isNixOS() && execSync("nix eval --raw nixpkgs#gcc.cc.lib").toString("utf-8") + "/lib"; -let LD_LIBRARY_PATH = undefined; -let electronPath = "electron"; -if (isNixOS()) { - resetPath(); - LD_LIBRARY_PATH = execSync("nix eval --raw nixpkgs#gcc.cc.lib").toString("utf-8") + "/lib"; - electronPath = execSync("nix eval --raw nixpkgs#electron_37").toString("utf-8") + "/bin/electron"; -} - -execSync(`${electronPath} ./src/main.ts`, { +execSync(`${getElectronPath()} ./src/main.ts`, { stdio: "inherit", cwd: projectRoot, env: { diff --git a/scripts/utils.mts b/scripts/utils.mts index d8cefe4c5..ea63f3760 100644 --- a/scripts/utils.mts +++ b/scripts/utils.mts @@ -1,3 +1,4 @@ +import { execSync } from "child_process"; import { readFileSync } from "fs"; import { platform } from "os"; @@ -7,7 +8,7 @@ export function isNixOS() { return osReleaseFile.includes("ID=nixos"); } -export function resetPath() { +function resetPath() { // On Unix-like systems, PATH is usually inherited from login shell // but npm prepends node_modules/.bin. Let's remove it: const origPath = process.env.PATH || ""; @@ -18,3 +19,12 @@ export function resetPath() { .filter(p => !p.includes("node_modules/.bin")) .join(":"); } + +export function getElectronPath() { + if (isNixOS()) { + resetPath(); + return execSync("nix eval --raw nixpkgs#electron_37").toString("utf-8") + "/bin/electron"; + } else { + return "electron"; + } +} \ No newline at end of file From a1beb1309447bb489baf172c08a624f1ad44d5d1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 20:46:44 +0300 Subject: [PATCH 68/85] chore(ci): add logs for electron-forge flatpak build --- apps/desktop/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 2a98a880b..2a904bc79 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -34,7 +34,7 @@ "start-no-dir": "cross-env TRILIUM_PORT=37743 tsx scripts/start.mts", "build": "tsx scripts/build.ts", "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist", - "electron-forge:make": "pnpm build && electron-forge make dist", + "electron-forge:make": "pnpm build && cross-env DEBUG=* electron-forge make dist", "electron-forge:package": "pnpm build && electron-forge package dist", "electron-forge:start": "pnpm build && electron-forge start dist", "postinstall": "tsx scripts/rebuild.mts" From d2d8bff9f71673765cf40ccf3e183fcbdb972881 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 21:06:41 +0300 Subject: [PATCH 69/85] fix(e2e/server): wrong database dir --- apps/server-e2e/playwright.config.ts | 3 +++ apps/server/package.json | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/server-e2e/playwright.config.ts b/apps/server-e2e/playwright.config.ts index 997e4f036..719bb2fbf 100644 --- a/apps/server-e2e/playwright.config.ts +++ b/apps/server-e2e/playwright.config.ts @@ -30,6 +30,9 @@ export default defineConfig({ url: baseURL, reuseExistingServer: !process.env.CI, cwd: join(__dirname, "../server"), + env: { + TRILIUM_DATA_DIR: "spec/db" + }, timeout: 5 * 60 * 1000 } : undefined, diff --git a/apps/server/package.json b/apps/server/package.json index f506db695..1056ebb96 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -12,7 +12,8 @@ "package": "pnpm build && bash scripts/build-server.sh", "test": "vitest", "test-build": "vitest --config vitest.build.config.mts", - "start-prod": "pnpm build && cross-env TRILIUM_ENV=production TRILIUM_DATA_DIR=data TRILIUM_PORT=8082 node dist/main.cjs", + "start-prod": "cross-env TRILIUM_DATA_DIR=data pnpm start-prod-no-dir", + "start-prod-no-dir": "pnpm build && cross-env TRILIUM_ENV=production TRILIUM_PORT=8082 node dist/main.cjs", "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular", "docker-build-debian": "pnpm build && docker build . -t triliumnext-debian -f Dockerfile", "docker-build-alpine": "pnpm build && docker build . -t triliumnext-alpine -f Dockerfile.alpine", From 9c43d661be47fb204f08be430d0a547654097750 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 21:13:32 +0300 Subject: [PATCH 70/85] fix(desktop): forge building for the wrong arch --- .github/actions/build-electron/action.yml | 2 +- apps/desktop/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-electron/action.yml b/.github/actions/build-electron/action.yml index 540b7ddcb..26d35b79f 100644 --- a/.github/actions/build-electron/action.yml +++ b/.github/actions/build-electron/action.yml @@ -86,7 +86,7 @@ runs: APPLE_ID_PASSWORD: ${{ env.APPLE_ID_PASSWORD }} WINDOWS_SIGN_EXECUTABLE: ${{ env.WINDOWS_SIGN_EXECUTABLE }} TRILIUM_ARTIFACT_NAME_HINT: TriliumNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }} - run: pnpm run --filter desktop electron-forge:make -- --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }} + run: pnpm run --filter desktop electron-forge:make --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }} # Add DMG signing step - name: Sign DMG diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 2a904bc79..5b98a2099 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -34,7 +34,7 @@ "start-no-dir": "cross-env TRILIUM_PORT=37743 tsx scripts/start.mts", "build": "tsx scripts/build.ts", "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist", - "electron-forge:make": "pnpm build && cross-env DEBUG=* electron-forge make dist", + "electron-forge:make": "pnpm build && cross-env electron-forge make dist", "electron-forge:package": "pnpm build && electron-forge package dist", "electron-forge:start": "pnpm build && electron-forge start dist", "postinstall": "tsx scripts/rebuild.mts" From f6579ac43408552e9380524509a898f53ac56b8e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 21:45:59 +0300 Subject: [PATCH 71/85] fix(e2e/server): data dir not working --- apps/server-e2e/playwright.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/server-e2e/playwright.config.ts b/apps/server-e2e/playwright.config.ts index 719bb2fbf..e7592bc69 100644 --- a/apps/server-e2e/playwright.config.ts +++ b/apps/server-e2e/playwright.config.ts @@ -26,7 +26,7 @@ export default defineConfig({ /* Run your local dev server before starting the tests */ webServer: !process.env.TRILIUM_DOCKER ? { - command: 'pnpm start-prod', + command: 'pnpm start-prod-no-dir', url: baseURL, reuseExistingServer: !process.env.CI, cwd: join(__dirname, "../server"), From e7521fe30c31231840596440c387300247b74d4e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 22:30:09 +0300 Subject: [PATCH 72/85] chore(server/e2e): increase timeout of a flaky test --- apps/server-e2e/src/layout/tab_bar.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/server-e2e/src/layout/tab_bar.spec.ts b/apps/server-e2e/src/layout/tab_bar.spec.ts index 3f81eb26a..90e17afef 100644 --- a/apps/server-e2e/src/layout/tab_bar.spec.ts +++ b/apps/server-e2e/src/layout/tab_bar.spec.ts @@ -79,7 +79,7 @@ test("Tabs are restored in right order", async ({ page, context }) => { // Refresh the page and check the order. await app.goto( { preserveTabs: true }); - await expect(app.getTab(0)).toContainText("Code notes"); + await expect(app.getTab(0)).toContainText("Code notes", { timeout: 15_000 }); await expect(app.getTab(1)).toContainText("Text notes"); await expect(app.getTab(2)).toContainText("Mermaid"); From f63f24ac9d47a8abadf175dc39563aea0e90266a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 2 Sep 2025 22:51:57 +0300 Subject: [PATCH 73/85] feat(server/e2e): upload test report if it fails --- .github/workflows/playwright.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index b4f047aea..711aaaaeb 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -29,4 +29,11 @@ jobs: run: pnpm install --frozen-lockfile - run: pnpm exec playwright install --with-deps - - run: pnpm -r e2e + - run: pnpm --filter server-e2e e2e + + - name: Upload test report + if: failure() + uses: actions/upload-artifact@v4 + with: + name: e2e report + path: apps/server-e2e/test-output From 7db3bde93366d309c28d487dc6caf050f13bb98d Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 09:02:10 +0300 Subject: [PATCH 74/85] chore(e2e): merge .env in playwright config + add retry --- apps/server-e2e/.env | 3 --- apps/server-e2e/playwright.config.ts | 11 +++++------ 2 files changed, 5 insertions(+), 9 deletions(-) delete mode 100644 apps/server-e2e/.env diff --git a/apps/server-e2e/.env b/apps/server-e2e/.env deleted file mode 100644 index 9087bb8d5..000000000 --- a/apps/server-e2e/.env +++ /dev/null @@ -1,3 +0,0 @@ -TRILIUM_INTEGRATION_TEST=memory -TRILIUM_PORT=8082 -TRILIUM_DATA_DIR=spec/db \ No newline at end of file diff --git a/apps/server-e2e/playwright.config.ts b/apps/server-e2e/playwright.config.ts index e7592bc69..3d7da5782 100644 --- a/apps/server-e2e/playwright.config.ts +++ b/apps/server-e2e/playwright.config.ts @@ -1,12 +1,8 @@ import { defineConfig, devices } from '@playwright/test'; import { join } from 'path'; -require('dotenv').config({ - path: __dirname + "/" + ".env" -}); - // For CI, you may want to set BASE_URL to the deployed application. -const port = process.env['TRILIUM_PORT']; +const port = process.env['TRILIUM_PORT'] ?? "8082"; const baseURL = process.env['BASE_URL'] || `http://127.0.0.1:${port}`; /** @@ -16,6 +12,7 @@ export default defineConfig({ testDir: "src", reporter: [["list"], ["html", { outputFolder: "test-output" }]], outputDir: "test-output", + retries: 3, /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { @@ -31,7 +28,9 @@ export default defineConfig({ reuseExistingServer: !process.env.CI, cwd: join(__dirname, "../server"), env: { - TRILIUM_DATA_DIR: "spec/db" + TRILIUM_DATA_DIR: "spec/db", + TRILIUM_PORT: port, + TRILIUM_INTEGRATION_TEST: "memory" }, timeout: 5 * 60 * 1000 } : undefined, From a56d622df78e6be709cecd52344d60981a93d89b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 10:55:40 +0300 Subject: [PATCH 75/85] chore(dx): address self-review --- .gitignore | 2 -- apps/server/src/services/asset_path.ts | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 877dd4cb2..2981e8b0e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ # See https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files for more about ignoring files. - /.cache -!/.cache/vite/.gitkeep # compiled output dist diff --git a/apps/server/src/services/asset_path.ts b/apps/server/src/services/asset_path.ts index 237a3f5a3..2e14996e4 100644 --- a/apps/server/src/services/asset_path.ts +++ b/apps/server/src/services/asset_path.ts @@ -1,7 +1,14 @@ import packageJson from "../../package.json" with { type: "json" }; import { isDev } from "./utils"; +/** + * The URL prefix for assets (e.g. `assets/v1.2.3`). + */ export const assetUrlFragment = `assets/v${packageJson.version}`; + +/** + * Similar to the {@link assetUrlFragment}, but on dev mode it also contains the `/src` suffix. + */ const assetPath = isDev ? assetUrlFragment + "/src" : assetUrlFragment; export default assetPath; From f9e725bcf819af2ed9b693b161ab3695f3537881 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 11:56:44 +0300 Subject: [PATCH 76/85] chore(dx): add aliases to desktop --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index c8f7343fc..c3e845111 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "server:start": "pnpm run --filter server dev", "server:start-prod": "pnpm run --filter server start-prod", "desktop:start": "pnpm run --filter desktop dev", - "electron:build": "pnpm run --filter desktop build", + "desktop:build": "pnpm run --filter desktop build", + "electron:build": "pnpm desktop:build", + "electron:start": "pnpm desktop:start", "chore:ci-update-nightly-version": "tsx ./scripts/update-nightly-version.ts", "chore:generate-openapi": "tsx ./scripts/generate-openapi.ts", "chore:update-build-info": "tsx ./scripts/update-build-info.ts", From cb6d87302dbca6dbcdf040731905c1cc270ab209 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 12:00:06 +0300 Subject: [PATCH 77/85] fix(dx/client): doc notes not working --- apps/client/src/services/doc_renderer.ts | 2 +- package.json | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/client/src/services/doc_renderer.ts b/apps/client/src/services/doc_renderer.ts index 1eca3d7c6..de3cfba6c 100644 --- a/apps/client/src/services/doc_renderer.ts +++ b/apps/client/src/services/doc_renderer.ts @@ -48,6 +48,6 @@ function getUrl(docNameValue: string, language: string) { // Cannot have spaces in the URL due to how JQuery.load works. docNameValue = docNameValue.replaceAll(" ", "%20"); - const basePath = window.glob.isDev ? new URL(window.glob.assetPath).pathname : window.glob.assetPath; + const basePath = window.glob.isDev ? window.glob.assetPath + "/.." : window.glob.assetPath; return `${basePath}/doc_notes/${language}/${docNameValue}.html`; } diff --git a/package.json b/package.json index c3e845111..444ef6e2d 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,10 @@ "server:start-prod": "pnpm run --filter server start-prod", "desktop:start": "pnpm run --filter desktop dev", "desktop:build": "pnpm run --filter desktop build", + "desktop:start-prod": "pnpm run --filter desktop start-prod", "electron:build": "pnpm desktop:build", "electron:start": "pnpm desktop:start", + "electron:start-prod": "pnpm desktop:start-prod", "chore:ci-update-nightly-version": "tsx ./scripts/update-nightly-version.ts", "chore:generate-openapi": "tsx ./scripts/generate-openapi.ts", "chore:update-build-info": "tsx ./scripts/update-build-info.ts", From 050aa40e20a85fb3f0eadcc2ba0a0056b902ffb7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 12:12:01 +0300 Subject: [PATCH 78/85] fix(dx/share): templates and script not accessible --- apps/server/src/share/routes.ts | 5 ++++- packages/share-theme/src/templates/page.ejs | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/server/src/share/routes.ts b/apps/server/src/share/routes.ts index 7e18ca505..37162ea28 100644 --- a/apps/server/src/share/routes.ts +++ b/apps/server/src/share/routes.ts @@ -18,6 +18,7 @@ import utils, { isDev, safeExtractMessageAndStackFromError } from "../services/u import options from "../services/options.js"; import { t } from "i18next"; import ejs from "ejs"; +import { join } from "path"; function getSharedSubTreeRoot(note: SNote): { note?: SNote; branch?: SBranch } { if (note.noteId === shareRoot.SHARE_ROOT_NOTE_ID) { @@ -401,7 +402,9 @@ function register(router: Router) { function renderDefault(res: Response>, template: "page" | "404", opts: any = {}) { // Path is relative to apps/server/dist/assets/views - const shareThemePath = `../../share-theme/templates/${template}.ejs`; + const shareThemePath = process.env.NODE_ENV === "development" + ? join(__dirname, `../../../../packages/share-theme/src/templates/${template}.ejs`) + : `../../share-theme/templates/${template}.ejs`; res.render(shareThemePath, opts); } diff --git a/packages/share-theme/src/templates/page.ejs b/packages/share-theme/src/templates/page.ejs index 5c39051eb..e4ac1f603 100644 --- a/packages/share-theme/src/templates/page.ejs +++ b/packages/share-theme/src/templates/page.ejs @@ -6,7 +6,7 @@ api/notes/<%= note.getRelation("shareFavicon").value %>/download<% } else { %>../favicon.ico<% } %>"> - + <% if (!isDev && !note.isLabelTruthy("shareOmitDefaultCss")) { %> From c75d2435fa14d111b98bcff43e9bfdc4f5a05a02 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 15:23:32 +0300 Subject: [PATCH 79/85] fix(dx/share): ckcontent missing --- apps/client/src/share.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/share.ts b/apps/client/src/share.ts index b260b4115..b438f0c0c 100644 --- a/apps/client/src/share.ts +++ b/apps/client/src/share.ts @@ -1,6 +1,6 @@ import "normalize.css"; import "boxicons/css/boxicons.min.css"; -// import "@triliumnext/ckeditor5/content.css"; +import "@triliumnext/ckeditor5/src/theme/ck-content.css"; import "@triliumnext/share-theme/styles/index.css"; import "@triliumnext/share-theme/scripts/index.js"; From 11d95b89e107a5021ab2c9772d5611093ffb825a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 18:16:03 +0300 Subject: [PATCH 80/85] chore(dx/edit-docs): de-nxify --- apps/desktop/package.json | 7 +- apps/edit-docs/package.json | 120 +----------------- package.json | 3 +- .../electron-rebuild.mts | 38 +++--- .../start.mts => scripts/electron-start.mts | 9 +- 5 files changed, 33 insertions(+), 144 deletions(-) rename apps/desktop/scripts/rebuild.mts => scripts/electron-rebuild.mts (50%) rename apps/desktop/scripts/start.mts => scripts/electron-start.mts (53%) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 5b98a2099..03612216d 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -30,14 +30,13 @@ "prebuild-install": "^7.1.1" }, "scripts": { - "dev": "cross-env TRILIUM_PORT=37741 TRILIUM_DATA_DIR=data tsx scripts/start.mts", - "start-no-dir": "cross-env TRILIUM_PORT=37743 tsx scripts/start.mts", + "dev": "cross-env TRILIUM_PORT=37741 TRILIUM_DATA_DIR=data tsx ../../scripts/electron-start.mts src/main.ts", + "start-no-dir": "cross-env TRILIUM_PORT=37743 tsx ../../scripts/electron-start.mts src/main.ts", "build": "tsx scripts/build.ts", "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist", "electron-forge:make": "pnpm build && cross-env electron-forge make dist", "electron-forge:package": "pnpm build && electron-forge package dist", - "electron-forge:start": "pnpm build && electron-forge start dist", - "postinstall": "tsx scripts/rebuild.mts" + "electron-forge:start": "pnpm build && electron-forge start dist" }, "license": "AGPL-3.0-only", "author": { diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json index c691d9420..9257d3670 100644 --- a/apps/edit-docs/package.json +++ b/apps/edit-docs/package.json @@ -15,120 +15,8 @@ "electron": "37.4.0", "fs-extra": "11.3.1" }, - "nx": { - "name": "edit-docs", - "implicitDependencies": [ - "server" - ], - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "main": "apps/edit-docs/src/edit-docs.ts", - "outputPath": "apps/edit-docs/dist", - "tsConfig": "apps/edit-docs/tsconfig.app.json", - "platform": "node", - "additionalEntryPoints": [ - "apps/edit-docs/src/edit-demo.ts" - ], - "external": [ - "electron", - "@electron/remote", - "better-sqlite3", - "./xhr-sync-worker.js" - ], - "format": [ - "cjs" - ], - "minify": false, - "thirdParty": true, - "declaration": false, - "esbuildOptions": { - "splitting": false, - "loader": { - ".css": "text" - } - }, - "assets": [ - { - "glob": "**/*", - "input": "apps/server/dist/node_modules", - "output": "node_modules" - }, - { - "glob": "**/*", - "input": "apps/server/dist/assets", - "output": "assets" - }, - { - "glob": "**/*", - "input": "apps/server/dist/public", - "output": "public" - }, - { - "glob": "xhr-sync-worker.js", - "input": "apps/server/node_modules/jsdom/lib/jsdom/living/xhr", - "output": "" - } - ], - "declarationRootDir": "apps/edit-docs/src" - } - }, - "rebuild-deps": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "defaultConfiguration": "default", - "cache": true, - "configurations": { - "default": { - "command": "cross-env DEBUG=* tsx scripts/electron-rebuild.mts {projectRoot}/dist" - }, - "nixos": { - "command": "cross-env DEBUG=* tsx scripts/electron-rebuild.mts {projectRoot}/dist $(nix-shell -p electron_35 --run \"electron --version\")" - } - } - }, - "edit-docs": { - "executor": "nx:run-commands", - "dependsOn": [ - "rebuild-deps" - ], - "defaultConfiguration": "default", - "configurations": { - "default": { - "command": "electron edit-docs.cjs", - "cwd": "{projectRoot}/dist" - }, - "nixos": { - "command": "nix-shell -p electron_35 --run \"electron {projectRoot}/dist/edit-docs.cjs\"", - "cwd": ".", - "forwardAllArgs": false - } - } - }, - "edit-demo": { - "executor": "nx:run-commands", - "dependsOn": [ - "rebuild-deps" - ], - "defaultConfiguration": "default", - "configurations": { - "default": { - "command": "electron edit-demo.cjs", - "cwd": "{projectRoot}/dist" - }, - "nixos": { - "command": "nix-shell -p electron_35 --run \"electron {projectRoot}/dist/edit-demo.cjs\"", - "cwd": ".", - "forwardAllArgs": false - } - } - } - } - } + "scripts": { + "edit-docs": "cross-env TRILIUM_PORT=37741 TRILIUM_DATA_DIR=data TRILIUM_INTEGRATION_TEST=memory-no-store DOCS_ROOT=../../../docs USER_GUIDE_ROOT=\"../../server/src/assets/doc_notes/en/User Guide\" tsx ../../scripts/electron-start.mts src/edit-docs.ts", + "edit-demo": "cross-env TRILIUM_PORT=37741 TRILIUM_DATA_DIR=data TRILIUM_INTEGRATION_TEST=memory-no-store DOCS_ROOT=../../../docs USER_GUIDE_ROOT=\"../../server/src/assets/doc_notes/en/User Guide\" tsx ../../scripts/electron-start.mts src/edit-demo.ts" + } } \ No newline at end of file diff --git a/package.json b/package.json index 444ef6e2d..0d88353bc 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "chore:update-version": "tsx ./scripts/update-version.ts", "test:all": "pnpm test:parallel && pnpm test:sequential", "test:parallel": "pnpm --filter=!server --filter=!ckeditor5-mermaid --filter=!ckeditor5-math --parallel test", - "test:sequential": "pnpm --filter=server --filter=ckeditor5-mermaid --filter=ckeditor5-math --sequential test" + "test:sequential": "pnpm --filter=server --filter=ckeditor5-mermaid --filter=ckeditor5-math --sequential test", + "postinstall": "tsx scripts/electron-rebuild.mts" }, "private": true, "devDependencies": { diff --git a/apps/desktop/scripts/rebuild.mts b/scripts/electron-rebuild.mts similarity index 50% rename from apps/desktop/scripts/rebuild.mts rename to scripts/electron-rebuild.mts index 635d4690f..48ede8cdd 100644 --- a/apps/desktop/scripts/rebuild.mts +++ b/scripts/electron-rebuild.mts @@ -1,15 +1,13 @@ -import { join } from "path"; -import { cpSync, existsSync, mkdirSync, rmSync } from "fs"; +import { join, resolve } from "path"; +import { cpSync, existsSync, mkdirSync, readFileSync, rmSync } from "fs"; import { execSync } from "child_process"; import { rebuild } from "@electron/rebuild" -import { getElectronPath, isNixOS } from "../../../scripts/utils.mjs"; -import packageJson from "../package.json" with { type: "json" }; +import { getElectronPath, isNixOS } from "./utils.mjs"; -const desktopProjectRoot = join(import.meta.dirname, ".."); -const workspaceRoot = join(desktopProjectRoot, "../.."); +const workspaceRoot = join(import.meta.dirname, ".."); -function copyNativeDependencies() { - const destPath = join(desktopProjectRoot, "node_modules/better-sqlite3"); +function copyNativeDependencies(projectRoot: string) { + const destPath = join(projectRoot, "node_modules/better-sqlite3"); if (existsSync(destPath)) { rmSync(destPath, { recursive: true }); @@ -18,24 +16,28 @@ function copyNativeDependencies() { cpSync(join(workspaceRoot, "node_modules/better-sqlite3"), destPath, { recursive: true, dereference: true }); } -function rebuildNativeDependencies() { - const electronVersion = determineElectronVersion(); +function rebuildNativeDependencies(projectRoot: string) { + const electronVersion = determineElectronVersion(projectRoot); if (!electronVersion) { console.error("Unable to determine Electron version."); process.exit(1); } - console.log(`Rebuilding ${desktopProjectRoot} with ${electronVersion}...`); + console.log(`Rebuilding ${projectRoot} with ${electronVersion}...`); + const resolvedPath = resolve(projectRoot); rebuild({ - projectRootPath: desktopProjectRoot, - buildPath: desktopProjectRoot, - electronVersion + projectRootPath: resolvedPath, + buildPath: resolvedPath, + electronVersion, + force: true }); } -function determineElectronVersion() { +function determineElectronVersion(projectRoot: string) { + const packageJson = JSON.parse(readFileSync(join(projectRoot, "package.json"), "utf-8")); + if (isNixOS()) { console.log("Detected NixOS, reading Electron version from PATH"); @@ -51,5 +53,7 @@ function determineElectronVersion() { } } -copyNativeDependencies(); -rebuildNativeDependencies(); +for (const projectRoot of [ "apps/desktop", "apps/edit-docs" ]) { + copyNativeDependencies(projectRoot); + rebuildNativeDependencies(projectRoot); +} diff --git a/apps/desktop/scripts/start.mts b/scripts/electron-start.mts similarity index 53% rename from apps/desktop/scripts/start.mts rename to scripts/electron-start.mts index e283a7023..92e85f9a8 100644 --- a/apps/desktop/scripts/start.mts +++ b/scripts/electron-start.mts @@ -1,20 +1,17 @@ import { execSync } from "child_process"; -import { getElectronPath, isNixOS } from "../../../scripts/utils.mjs"; -import { join } from "path"; +import { getElectronPath, isNixOS } from "./utils.mjs"; -const projectRoot = join(import.meta.dirname, ".."); const LD_LIBRARY_PATH = isNixOS() && execSync("nix eval --raw nixpkgs#gcc.cc.lib").toString("utf-8") + "/lib"; -execSync(`${getElectronPath()} ./src/main.ts`, { +execSync(`${getElectronPath()} ${process.argv[2]}`, { stdio: "inherit", - cwd: projectRoot, env: { ...process.env, NODE_OPTIONS: "--import tsx", NODE_ENV: "development", TRILIUM_ENV: "dev", TRILIUM_RESOURCE_DIR: "../server/src", - BETTERSQLITE3_NATIVE_PATH: join(projectRoot, "node_modules/better-sqlite3/build/Release/better_sqlite3.node"), + BETTERSQLITE3_NATIVE_PATH: "node_modules/better-sqlite3/build/Release/better_sqlite3.node", LD_LIBRARY_PATH } }); From e71284d887a123a225aeab00f8fc591361bd17fa Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 18:23:47 +0300 Subject: [PATCH 81/85] chore(dx): get rid of references to NX --- .github/instructions/nx.instructions.md | 40 ------------- .gitignore | 3 - CLAUDE.md | 13 +--- README.md | 4 +- apps/db-compare/README.md | 4 +- apps/website/README.md | 4 +- docs/README-ZH_CN.md | 4 +- docs/README-ZH_TW.md | 4 +- eslint.config.mjs | 60 ------------------- package.json | 2 + packages/ckeditor5/README.md | 7 --- packages/ckeditor5/vite.config.ts | 6 -- packages/codemirror/README.md | 7 --- packages/codemirror/eslint.config.mjs | 24 -------- packages/codemirror/vite.config.ts | 6 -- packages/commons/README.md | 11 ---- packages/commons/eslint.config.mjs | 24 -------- .../express-partial-content/eslint.config.mjs | 23 ------- .../express-partial-content/vite.config.ts | 4 -- packages/highlightjs/README.md | 11 ---- packages/highlightjs/eslint.config.mjs | 24 -------- 21 files changed, 14 insertions(+), 271 deletions(-) delete mode 100644 .github/instructions/nx.instructions.md delete mode 100644 eslint.config.mjs delete mode 100644 packages/ckeditor5/README.md delete mode 100644 packages/codemirror/README.md delete mode 100644 packages/codemirror/eslint.config.mjs delete mode 100644 packages/commons/README.md delete mode 100644 packages/commons/eslint.config.mjs delete mode 100644 packages/express-partial-content/eslint.config.mjs delete mode 100644 packages/highlightjs/README.md delete mode 100644 packages/highlightjs/eslint.config.mjs diff --git a/.github/instructions/nx.instructions.md b/.github/instructions/nx.instructions.md deleted file mode 100644 index d5894c44d..000000000 --- a/.github/instructions/nx.instructions.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -applyTo: '**' ---- - -// This file is automatically generated by Nx Console - -You are in an nx workspace using Nx 21.3.9 and pnpm as the package manager. - -You have access to the Nx MCP server and the tools it provides. Use them. Follow these guidelines in order to best help the user: - -# General Guidelines -- When answering questions, use the nx_workspace tool first to gain an understanding of the workspace architecture -- For questions around nx configuration, best practices or if you're unsure, use the nx_docs tool to get relevant, up-to-date docs!! Always use this instead of assuming things about nx configuration -- If the user needs help with an Nx configuration or project graph error, use the 'nx_workspace' tool to get any errors -- To help answer questions about the workspace structure or simply help with demonstrating how tasks depend on each other, use the 'nx_visualize_graph' tool - -# Generation Guidelines -If the user wants to generate something, use the following flow: - -- learn about the nx workspace and any specifics the user needs by using the 'nx_workspace' tool and the 'nx_project_details' tool if applicable -- get the available generators using the 'nx_generators' tool -- decide which generator to use. If no generators seem relevant, check the 'nx_available_plugins' tool to see if the user could install a plugin to help them -- get generator details using the 'nx_generator_schema' tool -- you may use the 'nx_docs' tool to learn more about a specific generator or technology if you're unsure -- decide which options to provide in order to best complete the user's request. Don't make any assumptions and keep the options minimalistic -- open the generator UI using the 'nx_open_generate_ui' tool -- wait for the user to finish the generator -- read the generator log file using the 'nx_read_generator_log' tool -- use the information provided in the log file to answer the user's question or continue with what they were doing - -# Running Tasks Guidelines -If the user wants help with tasks or commands (which include keywords like "test", "build", "lint", or other similar actions), use the following flow: -- Use the 'nx_current_running_tasks_details' tool to get the list of tasks (this can include tasks that were completed, stopped or failed). -- If there are any tasks, ask the user if they would like help with a specific task then use the 'nx_current_running_task_output' tool to get the terminal output for that task/command -- Use the terminal output from 'nx_current_running_task_output' to see what's wrong and help the user fix their problem. Use the appropriate tools if necessary -- If the user would like to rerun the task or command, always use `nx run ` to rerun in the terminal. This will ensure that the task will run in the nx context and will be run the same way it originally executed -- If the task was marked as "continuous" do not offer to rerun the task. This task is already running and the user can see the output in the terminal. You can use 'nx_current_running_task_output' to get the output of the task to verify the output. - - - diff --git a/.gitignore b/.gitignore index 2981e8b0e..1988bc8ca 100644 --- a/.gitignore +++ b/.gitignore @@ -33,9 +33,6 @@ testem.log .DS_Store Thumbs.db -.nx/cache -.nx/workspace-data - vite.config.*.timestamp* vitest.config.*.timestamp* test-output diff --git a/CLAUDE.md b/CLAUDE.md index 942ad06e3..5e7089895 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Overview -Trilium Notes is a hierarchical note-taking application with advanced features like synchronization, scripting, and rich text editing. It's built as a TypeScript monorepo using NX, with multiple applications and shared packages. +Trilium Notes is a hierarchical note-taking application with advanced features like synchronization, scripting, and rich text editing. It's built as a TypeScript monorepo using pnpm, with multiple applications and shared packages. ## Development Commands @@ -14,12 +14,9 @@ Trilium Notes is a hierarchical note-taking application with advanced features l ### Running Applications - `pnpm run server:start` - Start development server (http://localhost:8080) -- `pnpm nx run server:serve` - Alternative server start command -- `pnpm nx run desktop:serve` - Run desktop Electron app - `pnpm run server:start-prod` - Run server in production mode ### Building -- `pnpm nx build ` - Build specific project (server, client, desktop, etc.) - `pnpm run client:build` - Build client application - `pnpm run server:build` - Build server application - `pnpm run electron:build` - Build desktop application @@ -28,13 +25,8 @@ Trilium Notes is a hierarchical note-taking application with advanced features l - `pnpm test:all` - Run all tests (parallel + sequential) - `pnpm test:parallel` - Run tests that can run in parallel - `pnpm test:sequential` - Run tests that must run sequentially (server, ckeditor5-mermaid, ckeditor5-math) -- `pnpm nx test ` - Run tests for specific project - `pnpm coverage` - Generate coverage reports -### Linting & Type Checking -- `pnpm nx run :lint` - Lint specific project -- `pnpm nx run :typecheck` - Type check specific project - ## Architecture Overview ### Monorepo Structure @@ -94,7 +86,6 @@ Frontend uses a widget system (`apps/client/src/widgets/`): - `apps/server/src/assets/db/schema.sql` - Core database structure 4. **Configuration**: - - `nx.json` - NX workspace configuration - `package.json` - Project dependencies and scripts ## Note Types and Features @@ -154,7 +145,7 @@ Trilium provides powerful user scripting capabilities: - Update schema in `apps/server/src/assets/db/schema.sql` ## Build System Notes -- Uses NX for monorepo management with build caching +- Uses pnpm for monorepo management - Vite for fast development builds - ESBuild for production optimization - pnpm workspaces for dependency management diff --git a/README.md b/README.md index 0d6626f6e..d76005478 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ Download the repository, install dependencies using `pnpm` and then run the envi git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm nx run edit-docs:edit-docs +pnpm edit-docs:edit-docs ``` ### Building the Executable @@ -151,7 +151,7 @@ Download the repository, install dependencies using `pnpm` and then build the de git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm nx --project=desktop electron-forge:make -- --arch=x64 --platform=win32 +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 ``` For more details, see the [development docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). diff --git a/apps/db-compare/README.md b/apps/db-compare/README.md index 4cc13218a..c63f49b0a 100644 --- a/apps/db-compare/README.md +++ b/apps/db-compare/README.md @@ -6,12 +6,12 @@ To build and run manually: ```sh -nx build db-compare +pnpm build db-compare node ./apps/db-compare/dist/compare.js ``` To serve development build with arguments: ```sh -nx serve db-compare --args "apps/server/spec/db/document_v214.db" --args "apps/server/spec/db/document_v214_migrated.db" +pnpm dev --args "apps/server/spec/db/document_v214.db" --args "apps/server/spec/db/document_v214_migrated.db" ``` \ No newline at end of file diff --git a/apps/website/README.md b/apps/website/README.md index 9d692a9c0..88ad0a1c6 100644 --- a/apps/website/README.md +++ b/apps/website/README.md @@ -4,8 +4,8 @@ Landing page for Trilium Notes powered by [Svelte](https://github.com/sveltejs/c ## Developing -To run a dev server that will hot-reload changes: `pnpm nx run website:dev` +To run a dev server that will hot-reload changes: `pnpm dev` ## Building -To create a production build: `pnpm nx run website:build` +To create a production build: `pnpm build` diff --git a/docs/README-ZH_CN.md b/docs/README-ZH_CN.md index a23a24acd..818aa71aa 100644 --- a/docs/README-ZH_CN.md +++ b/docs/README-ZH_CN.md @@ -139,7 +139,7 @@ pnpm run server:start git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm nx run edit-docs:edit-docs +pnpm run edit-docs:edit-docs ``` ### 建置桌面可执行文件 @@ -149,7 +149,7 @@ pnpm nx run edit-docs:edit-docs git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm nx --project=desktop electron-forge:make -- --arch=x64 --platform=win32 +pnpm --filter=desktop electron-forge:make --arch=x64 --platform=win32 ``` 更多细节请参见[开发文件](https://github.com/TriliumNext/Notes/blob/develop/docs/Developer%20Guide/Developer%20Guide/Building%20and%20deployment/Running%20a%20development%20build.md)。 diff --git a/docs/README-ZH_TW.md b/docs/README-ZH_TW.md index d471bfce3..085871d61 100644 --- a/docs/README-ZH_TW.md +++ b/docs/README-ZH_TW.md @@ -139,7 +139,7 @@ pnpm run server:start git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm nx run edit-docs:edit-docs +pnpm edit-docs:edit-docs ``` ### 建置桌面可執行檔 @@ -149,7 +149,7 @@ pnpm nx run edit-docs:edit-docs git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm nx --project=desktop electron-forge:make -- --arch=x64 --platform=win32 +pnpm --filter=desktop electron-forge:make --arch=x64 --platform=win32 ``` 更多細節請參見[開發文件](https://github.com/TriliumNext/Notes/blob/develop/docs/Developer%20Guide/Developer%20Guide/Building%20and%20deployment/Running%20a%20development%20build.md)。 diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index 14d908731..000000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,60 +0,0 @@ -import nx from "@nx/eslint-plugin"; -import reactHooks from "eslint-plugin-react-hooks"; - -export default [ - ...nx.configs["flat/base"], - ...nx.configs["flat/typescript"], - ...nx.configs["flat/javascript"], - { - files: ['**/*.{ts,tsx}'], - plugins: { 'react-hooks': reactHooks }, - rules: { - 'react-hooks/rules-of-hooks': 'error', - } - }, - { - "ignores": [ - "**/dist", - "**/vite.config.*.timestamp*", - "**/vitest.config.*.timestamp*" - ] - }, - { - files: [ - "**/*.tsx", - ], - rules: { - "@nx/enforce-module-boundaries": [ - "error", - { - enforceBuildableLibDependency: true, - allow: [ - "^.*/eslint(\\.base)?\\.config\\.[cm]?js$" - ], - depConstraints: [ - { - sourceTag: "*", - onlyDependOnLibsWithTags: [ - "*" - ] - } - ] - } - ] - } - }, - { - files: [ - "**/*.ts", - "**/*.tsx", - "**/*.cts", - "**/*.mts", - "**/*.js", - "**/*.jsx", - "**/*.cjs", - "**/*.mjs" - ], - // Override or add rules here - rules: {} - } -]; diff --git a/package.json b/package.json index 0d88353bc..6eafcf347 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,8 @@ "chore:generate-openapi": "tsx ./scripts/generate-openapi.ts", "chore:update-build-info": "tsx ./scripts/update-build-info.ts", "chore:update-version": "tsx ./scripts/update-version.ts", + "edit-docs:edit-docs": "pnpm run --filter edit-docs edit-docs", + "edit-docs:edit-demo": "pnpm run --filter edit-docs edit-demo", "test:all": "pnpm test:parallel && pnpm test:sequential", "test:parallel": "pnpm --filter=!server --filter=!ckeditor5-mermaid --filter=!ckeditor5-math --parallel test", "test:sequential": "pnpm --filter=server --filter=ckeditor5-mermaid --filter=ckeditor5-math --sequential test", diff --git a/packages/ckeditor5/README.md b/packages/ckeditor5/README.md deleted file mode 100644 index 99d7186b4..000000000 --- a/packages/ckeditor5/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# ckeditor5 - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build ckeditor5` to build the library. diff --git a/packages/ckeditor5/vite.config.ts b/packages/ckeditor5/vite.config.ts index 64a0ea57a..a310ff5c9 100644 --- a/packages/ckeditor5/vite.config.ts +++ b/packages/ckeditor5/vite.config.ts @@ -7,12 +7,6 @@ export default defineConfig(() => ({ root: __dirname, cacheDir: '../../node_modules/.vite/packages/ckeditor5', plugins: [dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') })], - // Uncomment this if you are using workers. - // worker: { - // plugins: [ nxViteTsPaths() ], - // }, - // Configuration for building your library. - // See: https://vitejs.dev/guide/build.html#library-mode build: { outDir: './dist', emptyOutDir: true, diff --git a/packages/codemirror/README.md b/packages/codemirror/README.md deleted file mode 100644 index 34cc0ce78..000000000 --- a/packages/codemirror/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# codemirror - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build codemirror` to build the library. diff --git a/packages/codemirror/eslint.config.mjs b/packages/codemirror/eslint.config.mjs deleted file mode 100644 index 9ee1191ff..000000000 --- a/packages/codemirror/eslint.config.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import baseConfig from "../../eslint.config.mjs"; - -export default [ - ...baseConfig, - { - "files": [ - "**/*.json" - ], - "rules": { - "@nx/dependency-checks": [ - "error", - { - "ignoredFiles": [ - "{projectRoot}/eslint.config.{js,cjs,mjs}", - "{projectRoot}/vite.config.{js,ts,mjs,mts}" - ] - } - ] - }, - "languageOptions": { - "parser": (await import('jsonc-eslint-parser')) - } - } -]; diff --git a/packages/codemirror/vite.config.ts b/packages/codemirror/vite.config.ts index c2ba7e860..cb3055d05 100644 --- a/packages/codemirror/vite.config.ts +++ b/packages/codemirror/vite.config.ts @@ -7,12 +7,6 @@ export default defineConfig(() => ({ root: __dirname, cacheDir: '../../node_modules/.vite/packages/codemirror', plugins: [dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') }), ], - // Uncomment this if you are using workers. - // worker: { - // plugins: [ nxViteTsPaths() ], - // }, - // Configuration for building your library. - // See: https://vitejs.dev/guide/build.html#library-mode build: { outDir: './dist', emptyOutDir: true, diff --git a/packages/commons/README.md b/packages/commons/README.md deleted file mode 100644 index 21a2e80a8..000000000 --- a/packages/commons/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# commons - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build commons` to build the library. - -## Running unit tests - -Run `nx test commons` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/packages/commons/eslint.config.mjs b/packages/commons/eslint.config.mjs deleted file mode 100644 index 9ee1191ff..000000000 --- a/packages/commons/eslint.config.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import baseConfig from "../../eslint.config.mjs"; - -export default [ - ...baseConfig, - { - "files": [ - "**/*.json" - ], - "rules": { - "@nx/dependency-checks": [ - "error", - { - "ignoredFiles": [ - "{projectRoot}/eslint.config.{js,cjs,mjs}", - "{projectRoot}/vite.config.{js,ts,mjs,mts}" - ] - } - ] - }, - "languageOptions": { - "parser": (await import('jsonc-eslint-parser')) - } - } -]; diff --git a/packages/express-partial-content/eslint.config.mjs b/packages/express-partial-content/eslint.config.mjs deleted file mode 100644 index b0d78db72..000000000 --- a/packages/express-partial-content/eslint.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import baseConfig from "../../eslint.config.mjs"; - -export default [ - ...baseConfig, - { - "files": [ - "**/*.json" - ], - "rules": { - "@nx/dependency-checks": [ - "error", - { - "ignoredFiles": [ - "{projectRoot}/eslint.config.{js,cjs,mjs}" - ] - } - ] - }, - "languageOptions": { - "parser": (await import('jsonc-eslint-parser')) - } - } -]; diff --git a/packages/express-partial-content/vite.config.ts b/packages/express-partial-content/vite.config.ts index 450381921..e813c9ac1 100644 --- a/packages/express-partial-content/vite.config.ts +++ b/packages/express-partial-content/vite.config.ts @@ -5,10 +5,6 @@ export default defineConfig(() => ({ root: __dirname, cacheDir: '../../node_modules/.vite/packages/express-partial-content', plugins: [], - // Uncomment this if you are using workers. - // worker: { - // plugins: [ nxViteTsPaths() ], - // }, test: { watch: false, globals: true, diff --git a/packages/highlightjs/README.md b/packages/highlightjs/README.md deleted file mode 100644 index d3897f3f7..000000000 --- a/packages/highlightjs/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# highlightjs - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build highlightjs` to build the library. - -## Running unit tests - -Run `nx test highlightjs` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/packages/highlightjs/eslint.config.mjs b/packages/highlightjs/eslint.config.mjs deleted file mode 100644 index 9ee1191ff..000000000 --- a/packages/highlightjs/eslint.config.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import baseConfig from "../../eslint.config.mjs"; - -export default [ - ...baseConfig, - { - "files": [ - "**/*.json" - ], - "rules": { - "@nx/dependency-checks": [ - "error", - { - "ignoredFiles": [ - "{projectRoot}/eslint.config.{js,cjs,mjs}", - "{projectRoot}/vite.config.{js,ts,mjs,mts}" - ] - } - ] - }, - "languageOptions": { - "parser": (await import('jsonc-eslint-parser')) - } - } -]; From e73724a57643c48735910b9d49e2c7fb4199b012 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 20:08:17 +0300 Subject: [PATCH 82/85] chore(dx/desktop): integrate e2e tests in same project --- .gitignore | 2 +- apps/desktop-e2e/.env | 3 -- apps/desktop-e2e/eslint.config.mjs | 15 --------- apps/desktop-e2e/package.json | 5 --- apps/desktop-e2e/tsconfig.json | 25 -------------- .../src => desktop/e2e}/example.spec.ts | 2 +- .../src => desktop/e2e}/support.ts | 0 apps/desktop/package.json | 33 ++++++++++--------- .../playwright.config.ts | 7 ++-- 9 files changed, 21 insertions(+), 71 deletions(-) delete mode 100644 apps/desktop-e2e/.env delete mode 100644 apps/desktop-e2e/eslint.config.mjs delete mode 100644 apps/desktop-e2e/package.json delete mode 100644 apps/desktop-e2e/tsconfig.json rename apps/{desktop-e2e/src => desktop/e2e}/example.spec.ts (98%) rename apps/{desktop-e2e/src => desktop/e2e}/support.ts (100%) rename apps/{desktop-e2e => desktop}/playwright.config.ts (88%) diff --git a/.gitignore b/.gitignore index 1988bc8ca..66e9781f9 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,7 @@ vite.config.*.timestamp* vitest.config.*.timestamp* test-output -apps/*/data +apps/*/data* apps/*/out upload diff --git a/apps/desktop-e2e/.env b/apps/desktop-e2e/.env deleted file mode 100644 index e1766490e..000000000 --- a/apps/desktop-e2e/.env +++ /dev/null @@ -1,3 +0,0 @@ -TRILIUM_INTEGRATION_TEST=memory-no-store -TRILIUM_PORT=8082 -TRILIUM_DATA_DIR=data \ No newline at end of file diff --git a/apps/desktop-e2e/eslint.config.mjs b/apps/desktop-e2e/eslint.config.mjs deleted file mode 100644 index 1603594d7..000000000 --- a/apps/desktop-e2e/eslint.config.mjs +++ /dev/null @@ -1,15 +0,0 @@ -import playwright from "eslint-plugin-playwright"; -import baseConfig from "../../eslint.config.mjs"; - -export default [ - playwright.configs["flat/recommended"], - ...baseConfig, - { - files: [ - "**/*.ts", - "**/*.js" - ], - // Override or add rules here - rules: {} - } -]; diff --git a/apps/desktop-e2e/package.json b/apps/desktop-e2e/package.json deleted file mode 100644 index 7a1b278c7..000000000 --- a/apps/desktop-e2e/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "@triliumnext/desktop-e2e", - "version": "0.0.1", - "private": true -} diff --git a/apps/desktop-e2e/tsconfig.json b/apps/desktop-e2e/tsconfig.json deleted file mode 100644 index 1df867f3a..000000000 --- a/apps/desktop-e2e/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "allowJs": true, - "outDir": "out-tsc/playwright", - "sourceMap": false - }, - "include": [ - "**/*.ts", - "**/*.js", - "playwright.config.ts", - "src/**/*.spec.ts", - "src/**/*.spec.js", - "src/**/*.test.ts", - "src/**/*.test.js", - "src/**/*.d.ts" - ], - "exclude": [ - "out-tsc", - "test-output", - "eslint.config.js", - "eslint.config.mjs", - "eslint.config.cjs" - ] -} diff --git a/apps/desktop-e2e/src/example.spec.ts b/apps/desktop/e2e/example.spec.ts similarity index 98% rename from apps/desktop-e2e/src/example.spec.ts rename to apps/desktop/e2e/example.spec.ts index 7deb51482..d07085ef9 100644 --- a/apps/desktop-e2e/src/example.spec.ts +++ b/apps/desktop/e2e/example.spec.ts @@ -60,7 +60,7 @@ test('First setup', async () => { // Verify the shared link is valid const requestContext = await request.newContext(); const response = await requestContext.get(linkUrl!); - expect(response).toBeOK(); + await expect(response).toBeOK(); await mainWindow.waitForTimeout(5000); }); diff --git a/apps/desktop-e2e/src/support.ts b/apps/desktop/e2e/support.ts similarity index 100% rename from apps/desktop-e2e/src/support.ts rename to apps/desktop/e2e/support.ts diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 03612216d..fdd9ce285 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -4,6 +4,22 @@ "description": "Build your personal knowledge base with Trilium Notes", "private": true, "main": "src/main.ts", + "license": "AGPL-3.0-only", + "author": { + "name": "Trilium Notes Team", + "email": "contact@eliandoran.me", + "url": "https://github.com/TriliumNext/Notes" + }, + "scripts": { + "dev": "cross-env TRILIUM_PORT=37741 TRILIUM_DATA_DIR=data tsx ../../scripts/electron-start.mts src/main.ts", + "start-no-dir": "cross-env TRILIUM_PORT=37743 tsx ../../scripts/electron-start.mts src/main.ts", + "build": "tsx scripts/build.ts", + "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 ELECTRON_IS_DEV=0 electron dist", + "electron-forge:make": "pnpm build && cross-env electron-forge make dist", + "electron-forge:package": "pnpm build && electron-forge package dist", + "electron-forge:start": "pnpm build && electron-forge start dist", + "e2e": "pnpm build && cross-env TRILIUM_INTEGRATION_TEST=memory-no-store TRILIUM_PORT=8082 TRILIUM_DATA_DIR=data-e2e ELECTRON_IS_DEV=0 playwright test" + }, "dependencies": { "@electron/remote": "2.1.3", "better-sqlite3": "^12.0.0", @@ -28,20 +44,5 @@ "@electron-forge/maker-zip": "7.8.3", "@electron-forge/plugin-auto-unpack-natives": "7.8.3", "prebuild-install": "^7.1.1" - }, - "scripts": { - "dev": "cross-env TRILIUM_PORT=37741 TRILIUM_DATA_DIR=data tsx ../../scripts/electron-start.mts src/main.ts", - "start-no-dir": "cross-env TRILIUM_PORT=37743 tsx ../../scripts/electron-start.mts src/main.ts", - "build": "tsx scripts/build.ts", - "start-prod": "pnpm build && cross-env TRILIUM_DATA_DIR=data TRILIUM_PORT=37841 electron dist", - "electron-forge:make": "pnpm build && cross-env electron-forge make dist", - "electron-forge:package": "pnpm build && electron-forge package dist", - "electron-forge:start": "pnpm build && electron-forge start dist" - }, - "license": "AGPL-3.0-only", - "author": { - "name": "Trilium Notes Team", - "email": "contact@eliandoran.me", - "url": "https://github.com/TriliumNext/Notes" - } + } } \ No newline at end of file diff --git a/apps/desktop-e2e/playwright.config.ts b/apps/desktop/playwright.config.ts similarity index 88% rename from apps/desktop-e2e/playwright.config.ts rename to apps/desktop/playwright.config.ts index d1b7c40f2..9ac033791 100644 --- a/apps/desktop-e2e/playwright.config.ts +++ b/apps/desktop/playwright.config.ts @@ -1,10 +1,5 @@ import { defineConfig, devices } from '@playwright/test'; -require('dotenv').config({ - path: __dirname + "/" + ".env" -}); - - /** * See https://playwright.dev/docs/test-configuration. */ @@ -14,6 +9,8 @@ export default defineConfig({ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', }, + testDir: "e2e", + outputDir: "test-output", projects: [ { name: "chromium", From 6163ab8c42454bf51863979c2da1e93bd8f16798 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 20:08:29 +0300 Subject: [PATCH 83/85] refactor(dx): remove unused .env files --- .env | 1 - apps/edit-docs/.env | 7 ------- 2 files changed, 8 deletions(-) delete mode 100644 .env delete mode 100644 apps/edit-docs/.env diff --git a/.env b/.env deleted file mode 100644 index ff859e622..000000000 --- a/.env +++ /dev/null @@ -1 +0,0 @@ -NODE_OPTIONS=--max_old_space_size=4096 \ No newline at end of file diff --git a/apps/edit-docs/.env b/apps/edit-docs/.env deleted file mode 100644 index bb17074c3..000000000 --- a/apps/edit-docs/.env +++ /dev/null @@ -1,7 +0,0 @@ -TRILIUM_DATA_DIR=../data -TRILIUM_INTEGRATION_TEST=memory-no-store -TRILIUM_PORT=37741 - -# Paths are relative to dist root -DOCS_ROOT=../../../docs -USER_GUIDE_ROOT=../../../apps/server/src/assets/doc_notes/en/User Guide \ No newline at end of file From 53df7835d3fb85304839f21f35ea2cfa58a96bc5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 20:24:23 +0300 Subject: [PATCH 84/85] Revert "chore(dx/server): remove dependency on CKEditor for now" This reverts commit 4739e2e3b265bd2e6f7e603bb0e380f613186d7e. --- apps/server/src/services/export/zip.ts | 3 +++ apps/server/src/types.d.ts | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/apps/server/src/services/export/zip.ts b/apps/server/src/services/export/zip.ts index 58ab7074f..9d3e73d25 100644 --- a/apps/server/src/services/export/zip.ts +++ b/apps/server/src/services/export/zip.ts @@ -21,6 +21,7 @@ import type AttributeMeta from "../meta/attribute_meta.js"; import type BBranch from "../../becca/entities/bbranch.js"; import type { Response } from "express"; import type { NoteMetaFile } from "../meta/note_meta.js"; +import cssContent from "@triliumnext/ckeditor5/content.css"; type RewriteLinksFn = (content: string, noteMeta: NoteMeta) => string; @@ -513,6 +514,8 @@ ${markdownContent}`; if (!cssMeta.dataFileName) { return; } + + archive.append(cssContent, { name: cssMeta.dataFileName }); } try { diff --git a/apps/server/src/types.d.ts b/apps/server/src/types.d.ts index 4bcac86d2..c302e27d8 100644 --- a/apps/server/src/types.d.ts +++ b/apps/server/src/types.d.ts @@ -23,6 +23,12 @@ declare module "is-animated" { export default isAnimated; } +declare module "@triliumnext/ckeditor5/content.css" { + const content: string; + export default content; +} + + declare module "@triliumnext/share-theme/*.ejs" { const content: string; export default content; From 534113b303a9638d9a4b0f49008003d0f3b51e77 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 3 Sep 2025 21:09:56 +0300 Subject: [PATCH 85/85] fix(dx/share): ckcontent for share theme not preserved --- apps/server/scripts/build.ts | 1 + apps/server/src/services/export/zip.ts | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 8d62921ac..84862d060 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -12,6 +12,7 @@ async function main() { // Copy node modules dependencies build.copyNodeModules([ "better-sqlite3", "bindings", "file-uri-to-path" ]); build.copy("/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); + build.copy("/node_modules/ckeditor5/dist/ckeditor5-content.css", "ckeditor5-content.css"); // Integrate the client. build.triggerBuildAndCopyTo("apps/client", "public/"); diff --git a/apps/server/src/services/export/zip.ts b/apps/server/src/services/export/zip.ts index 9d3e73d25..91d01c8c7 100644 --- a/apps/server/src/services/export/zip.ts +++ b/apps/server/src/services/export/zip.ts @@ -6,7 +6,7 @@ import path from "path"; import mimeTypes from "mime-types"; import mdService from "./markdown.js"; import packageInfo from "../../../package.json" with { type: "json" }; -import { getContentDisposition, escapeHtml, getResourceDir } from "../utils.js"; +import { getContentDisposition, escapeHtml, getResourceDir, isDev } from "../utils.js"; import protectedSessionService from "../protected_session.js"; import sanitize from "sanitize-filename"; import fs from "fs"; @@ -21,7 +21,6 @@ import type AttributeMeta from "../meta/attribute_meta.js"; import type BBranch from "../../becca/entities/bbranch.js"; import type { Response } from "express"; import type { NoteMetaFile } from "../meta/note_meta.js"; -import cssContent from "@triliumnext/ckeditor5/content.css"; type RewriteLinksFn = (content: string, noteMeta: NoteMeta) => string; @@ -515,7 +514,11 @@ ${markdownContent}`; return; } - archive.append(cssContent, { name: cssMeta.dataFileName }); + const cssFile = isDev + ? path.join(__dirname, "../../../../../node_modules/ckeditor5/dist/ckeditor5-content.css") + : path.join(getResourceDir(), "ckeditor5-content.css"); + + archive.append(fs.readFileSync(cssFile, "utf-8"), { name: cssMeta.dataFileName }); } try {